개발자 크루

[RecurDyn]

취미로 코딩하는 RecurDyn 개발자 모임

Lv.4

썸네일

[21년 재직자 대회 본선] 트럭

난이도
4 단계
참가자
0
제출
0
정답률
0.00 %
언어별 시간/메모리
언어별 시간/메모리 표
언어 시간 메모리
JavaScript 4초 1024MB
C 2초 1024MB
C++ 2초 1024MB
Java 4초 1024MB
Python 4초 1024MB

현대자동차그룹의 트럭 디자이너로 일하는 당신은 신차의 크기를 결정하려고 한다.

총 N명의 소비자에게 신차 구매의사를 조사했다.


i (1≤i≤N)번째 소비자는 Ai 개의 제안을 보냈는데, 이 중 j (1≤j≤Ai)번째 제안은 “신차의 크기가 Si,j 이상이라면 차량 한 대를 Pi,j원에 구매할 용의가 있다”는 것이다.


하지만 소비자 각각에 맞춘 차량을 생산하기에는 설비를 위한 비용이 막대해질 것이므로, 신차의 크기를 하나로 결정해야한다.

각 소비자는 트럭을 2대 이상 구매하지는 않을 것이다. 따라서, 당신은 각 소비자마다 그 소비자가 제시한 제안 중 하나를 수락하거나, 그 소비자의 제안을 모두 거절할 것이다. 이 때 당신이 정한 신차의 크기가 소비자의 여러가지 제안을 만족할 수 있다.


당신은 매출에 따라 신차의 크기를 얼마로 설정해야 하는지를 알아보고자, M가지의 시나리오를 고려해 보기로 하였다. 당신은 모든 k (1≤k≤M)에 대해, 총 Qk원의 매출을 내려면, 신차의 크기가 최소 얼마여야 하는지를 구해야 한다.

제약조건

주어지는 모든 수는 정수이다.

1≤N≤100,000


모든 i,j (1≤i≤N, 1≤j≤Ai)에 대해 1≤Si,j, Pi,j≤109

1≤M≤100,000

모든 k (1≤k≤M)에 대해, 1≤Qk≤109

입력형식

첫 번째 줄에 N이 주어진다.

다음 N개의 줄에는 소비자의 제안에 대한 정보가 주어진다

이 중 i (1≤i≤N)번째 줄의 형식은 다음과 같다: Ai Si,1 Pi,1 … Si,Ai Pi,Ai

그 다음 줄에 시나리오의 개수 M이 주어진다.

마지막 줄에 M개의 정수 Q1, Q2,…, QM이 공백 하나씩을 사이로 두고 주어진다.

출력형식

M개의 수를 한 칸의 공백을 두고 출력한다.

이 중 k (1≤k≤M)번째 수는

Qk원 이상의 매출을 낼 수 있다면, 이 때 신차의 최소 크기이다.

Qk원 이상의 매출을 낼 수 없다면, -1이다.

입력예제1

4 1 1 1 1 2 2 1 3 3 1 4 4 10 1 2 3 4 5 6 7 8 9 10

출력예제1

1 2 2 3 3 3 4 4 4 4

입력예제2

5 2 10 17 5 19 2 8 7 10 21 3 3 3 9 13 11 14 3 5 3 1 2 9 15 1 9 11 11 21 31 35 54 79 80 100 3 5 7 9

출력예제2

5 8 9 9 10 11 -1 3 3 5 5