Need For Speed

면접 대비

시간 제한1초메모리 제한128 MB

요약
자동차의 기본 힘과 질량, 그리고 힘과 질량을 더하는 N개의 부품이 주어질 때, 총 힘을 총 질량으로 나눈 값이 최대가 되는 부분집합을 고르고, 동점이면 총 질량이 작은 쪽을 고른다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

Bessie는 다가오는 그랑프리를 앞두고 경주용 자동차를 손보고 있으며, 더 빠르게 만들기 위해 추가 부품을 사려고 한다.

현재 이 자동차의 질량은 MM (1≤M≤10001 \le M \le 1000)이고, 스스로를 앞으로 밀어내는 힘은 FF (1≤F≤1,000,0001 \le F \le 1{,}000{,}000)이다. 뉴턴의 제2법칙에 따르면 F=MAF = MA이므로, 가속도는 A=F/MA = F / M이다.

부품 상점에는 11번부터 NN번까지 번호가 매겨진 NN (1≤N≤10,0001 \le N \le 10{,}000)개의 부품이 있으며, 각 부품의 재고는 최대 한 개이다. ii번 부품을 사면 힘이 FiF_i (1≤Fi≤1,000,0001 \le F_i \le 1{,}000{,}000)만큼, 질량이 MiM_i (1≤Mi≤10001 \le M_i \le 1000)만큼 늘어난다. Bessie는 부품의 어떤 부분집합이든 (하나도 사지 않는 경우 포함) 자유롭게 살 수 있다.

부품 집합 SS를 장착하면 자동차의 총 힘은 F+∑i∈SFiF + \sum_{i \in S} F_i, 총 질량은 M+∑i∈SMiM + \sum_{i \in S} M_i가 되어 가속도는 다음과 같다.

A=F+∑i∈SFiM+∑i∈SMiA = \frac{F + \sum_{i \in S} F_i}{M + \sum_{i \in S} M_i}

이 가속도를 최대로 만드는 부품 집합을 고르시오. 최대 가속도가 같은 집합이 여러 개라면 총 질량이 가장 작은 집합을 고른다. 최적의 집합은 유일함이 보장된다.

예를 들어 힘이 ff, 질량이 mm인 부품 하나만 장착하면 가속도는 (F+f)/(M+m)(F + f) / (M + m)으로 바뀐다.

입력

첫째 줄에 세 정수 FF, MM, NN이 공백으로 구분되어 주어진다.

다음 NN개의 줄 중 i+1i+1번째 줄에는 ii번 부품이 더하는 힘과 질량을 나타내는 두 정수 FiF_i와 MiM_i가 공백으로 구분되어 주어진다.

출력

Bessie가 장착해야 할 부품의 번호(1부터 시작)를 오름차순으로 한 줄에 하나씩 출력한다. 어떤 부품도 장착하지 않는 것이 최적이라면 NONE을 출력한다.

예제3

  1. 예제 1

    입력
    1500 100 4
    250 25
    150 9
    120 5
    200 8
    
    예상 출력
    2
    3
    4
    
  2. 예제 2

    입력
    1 1000 1
    1000000 1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1000000 1 1
    1 1000
    
    예상 출력
    NONE