놋쇠 벽돌 배합하기

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

요약
구리 함량과 가격이 주어진 N개의 벽돌 종류에서 각 질의마다 서로 다른 M개를 골라 구리 합이 [M*Cmin, M*Cmax]에 들어가도록 최소 총가격을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 정렬, 그리디, 배열
정답자
아직 제출이 없습니다

문제

한 공장이 놋쇠 벽돌을 만든다. 놋쇠는 구리와 아연의 합금이며, 벽돌 하나의 무게는 정확히 10001000그램이고 그중 구리 함량은 11그램부터 999999그램까지가 될 수 있다. 공장은 서로 다른 NN가지 종류의 벽돌을 만들며, 각 종류는 고유한 구리 함량과 가격을 가지고 카탈로그에 실려 있다.

손님은 정확히 MM개의 벽돌을 사려고 하는데, 이들은 모두 서로 다른 종류여야 한다. 고른 벽돌들을 함께 녹이면, 그 혼합물은 킬로그램당 구리 함량이 최소 CminC_{min}그램 이상, 최대 CmaxC_{max}그램 이하가 되어야 한다. 벽돌 하나가 정확히 11킬로그램이므로 MM개를 녹이면 MM킬로그램이 되고, 전체 구리량은 고른 구리 함량의 합과 같다. 따라서 조건은 다음과 같다.

M⋅Cmin≤(고른 벽돌들의 구리 함량 합)≤M⋅Cmax.M \cdot C_{min} \le (\text{고른 벽돌들의 구리 함량 합}) \le M \cdot C_{max}.

이 조건을 만족하는 모든 선택 중에서 손님은 총가격이 가장 작은 것을 원한다. 각 손님에 대해 그 최소 총가격을 구하여라. MM, CminC_{min}, CmaxC_{max} 값은 손님마다 다르다.

입력

첫째 줄에는 벽돌 종류의 수 NN (1≤N≤2001 \le N \le 200)이 주어진다. 이어지는 NN개의 줄에는 각 벽돌 종류의 구리 함량(11부터 999999그램)과 가격(센트 단위) 두 정수가 주어진다. 어떤 벽돌도 10001000센트를 넘지 않는다.

그다음 줄에는 손님의 수 CC (1≤C≤1001 \le C \le 100)가 주어진다. 이어지는 CC개의 줄에는 각 손님의 요청을 나타내는 세 정수 MM, CminC_{min}, CmaxC_{max} (1≤M≤201 \le M \le 20, 1≤Cmin≤9991 \le C_{min} \le 999, 1≤Cmax≤9991 \le C_{max} \le 999)가 주어진다.

입력의 모든 수는 양의 정수이다.

출력

각 손님에 대해, 조건을 만족하도록 서로 다른 MM가지 벽돌 종류를 고를 때의 최소 총가격(센트 단위)을 한 줄에 하나씩 출력한다. 조건을 만족하는 선택이 없으면 그 손님에 대해 impossible을 출력한다.

예제1

  1. 예제 1

    입력
    11
    550 300
    550 200
    700 340
    300 140
    600 780
    930 785
    730 280
    678 420
    999 900
    485 390
    888 800
    3
    2 500 620
    9 550 590
    9 610 620
    
    예상 출력
    420
    impossible
    3635