아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수문

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

요약
각 수문은 열면 시간당 Fi를 배수하고 비용 Ci가 든다. 각 질의 (V, T)마다 Fi*T 용량의 합이 V 이상이 되는 최소 비용을 구한다.
난이도

보통10점 중 5점

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

문제

댐에는 수문이 nn개 있다. 각 수문은 고유한 유량과 물길을 가지며, 열리면 하류 지역에 홍수 피해를 줄 수 있다.

수문 GiG_i를 열면 시간당 FiF_i m³의 물이 빠져나가고, 이로 인한 피해 비용은 CiC_i이다. 이 피해 비용은 수문을 여는 시간과 무관하게, 수문을 한 번이라도 열면 발생하는 고정 비용이다.

댐에는 물이 VV m³ 저장되어 있으며, 이 물을 모두 TT시간 이내에 빼내야 한다. 피해 비용의 합이 최소가 되도록 수문을 여는 방법을 구하는 프로그램을 작성하시오.

각 수문은 서로 독립적으로 동작하고, 여는 시간은 정수 시간 단위이며 최대 TT시간까지 열 수 있다. 따라서 수문 GiG_i를 열면 최대 Fi×TF_i \times T m³의 물을 빼낼 수 있다.

예를 들어 수문이 4개 있고 각 수문의 유량과 피해 비용이 다음과 같다고 하자.

수문G1G_1G2G_2G3G_3G4G_4
유량 (m³/hour)720000500001300001200000
비용1200006000050000150000

물 5000000 m³를 7시간 이내에 빼내야 한다면, G1G_1만 열어도 720000×7=5040000720000 \times 7 = 5040000 m³를 빼낼 수 있으므로 충분하며, 비용은 120000이다.

물 5000000 m³를 30시간 이내에 빼내야 한다면, G2G_2와 G3G_3을 함께 열면 시간당 180000 m³를 빼낼 수 있어 30시간 안에 충분히 빼낼 수 있고, 비용은 60000+50000=11000060000 + 50000 = 110000이다.

입력

첫째 줄에 수문의 개수 nn이 주어진다. (1≤n≤201 \le n \le 20)

다음 nn개의 줄에는 각 수문 GiG_i의 유량 FiF_i(m³/hour)와 피해 비용 CiC_i가 공백으로 구분되어 주어진다.

그다음 줄에는 질의의 개수 mm이 주어진다. (1≤m≤501 \le m \le 50)

이어지는 mm개의 줄에는 각 질의의 VV와 TT가 주어지며, 저장된 물 VV m³를 TT시간 이내에 모두 빼내야 함을 뜻한다.

(1≤Fi,Ci,V≤1091 \le F_i, C_i, V \le 10^9, 1≤T≤10001 \le T \le 1000)

출력

각 질의마다 한 줄에 Case k: X 형식으로 출력한다. 여기서 kk는 1부터 시작하는 질의 번호이고, XX는 최소 피해 비용이다. 만약 물 VV를 TT시간 이내에 모두 빼낼 수 없으면 XX 대신 IMPOSSIBLE을 출력한다.

예제1

  1. 예제 1

    입력
    4
    720000 120000
    50000 60000
    130000 50000
    1200000 150000
    3
    5000000 7
    5000000 30
    63000000 24
    
    예상 출력
    Case 1: 120000
    Case 2: 110000
    Case 3: IMPOSSIBLE