요술 밭의 수박

시간 제한2초메모리 제한256 MB

요약
N개의 일차함수 W0+S*K 가운데 M개 날짜마다 값이 가장 큰 수박 번호를 작은 번호 우선으로 출력합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

세계 금융 위기가 바보 나라의 경제를 무너뜨리자, 부라티노는 수입을 늘리려고 수박 농사를 시작했다. 밭은 물론 그 유명한 요술 밭이다. 부라티노가 워낙 부지런한 덕분인지 요술 밭의 신비한 성질 때문인지, 수박마다 자라는 속도는 다르지만 그 속도는 시간이 지나도 변하지 않는다. 요술 밭의 수박은 금세 유명해져서 관광객이 몰려들었다.

관광객이 수박과 함께 사진 찍기를 좋아한다는 사실을 알아챈 부라티노는 VIP 관광객을 위한 새 서비스를 하나 더 열었다. 가장 무거운 수박과 사진 찍기다.

어느 날 부라티노는 모든 수박의 무게와 성장 속도를 한꺼번에 쟀다. 이날부터 KK일이 지난 뒤 수박 하나의 무게는 WK=W0+S×KW_K = W_0 + S \times K이다. 여기서 W0W_0은 처음 잰 무게이고, SS는 그 수박의 성장 속도이다.

부라티노는 이 계산을 날마다 손으로 하기 싫어한다. 주어진 날에 가장 무거운 수박을 찾는 프로그램을 작성하라.

입력

첫째 줄에 수박의 개수 NN이 주어진다. (1≤N≤1051 \le N \le 10^5) 다음 NN개 줄에는 수박 하나의 처음 무게 W0W_0과 성장 속도 SS가 공백 하나를 사이에 두고 주어진다. (1≤W0,S≤1091 \le W_0, S \le 10^9)

다음 줄에는 가장 무거운 수박을 찾아야 하는 날의 수 MM이 주어진다. (1≤M≤1051 \le M \le 10^5) 마지막 MM개 줄에는 날짜 KK가 한 줄에 하나씩 주어진다. (1≤K≤1091 \le K \le 10^9)

출력

MM개 줄을 입력에 주어진 날짜 순서 그대로 출력한다. 각 줄에 그날 가장 무거운 수박의 번호를 출력한다. 가장 무거운 수박이 여럿이면 그중 번호가 가장 작은 것을 출력한다. 수박의 번호는 입력에 나온 순서대로 11번부터 NN번까지이다.

예제5

  1. 예제 1

    입력
    3
    1 4
    4 3
    8 1
    3
    1
    3
    2
    
    예상 출력
    3
    1
    2
    
  2. 예제 2

    입력
    1
    1 1
    3
    1
    500000000
    1000000000
    
    예상 출력
    1
    1
    1
    
  3. 예제 3

    입력
    3
    7 5
    7 5
    7 5
    3
    1
    2
    1000000000
    
    예상 출력
    1
    1
    1
    
  4. 예제 4

    입력
    4
    4 3
    6 2
    8 1
    2 4
    5
    1
    2
    3
    4
    10
    
    예상 출력
    3
    1
    4
    4
    4
    
  5. 예제 5

    입력
    3
    1000000000 1000000000
    1000000000 999999999
    999999999 1000000000
    2
    1
    1000000000
    
    예상 출력
    1
    1