만두 팔기 Batch 컴파일 명령
시간 제한 | 메모리 제한 | 제출 횟수 | 통과한 사람 수 | 비율 |
---|---|---|---|---|
1000 ms | 256 MiB | 8 | 7 | 87.5% |
상수는 만두를 만들어 생계를 유지하고 있습니다. 오늘 그는 $M$종류의 만두를 각각 한 개씩 만들었습니다. 이 만두들은 크기가 모두 같지만 맛이 다르기 때문에 가격이 가지각색입니다. $i$ ($1 \le i \le M$) 번 만두의 가격은 $P_{i}$원입니다.
승현이는 상자들을 만들어 생계를 유지하고 있습니다. 그는 $N$종류의 포장 상자들을 판매하고 있으며, 이 중 $j$ ($1 \le j \le N$)번 상자에는 최대 $C_{j}$개의 만두를 넣을 수 있고 그 가격은 $E_{j}$원입니다.
상수는 승현이에게 한 종류당 최대 한 개의 상자를 구매하여 만두들을 이 상자에 나누어 넣어서 판매하고 한 상자를 한 세트라고 정의하기로 합니다. 각 만두 세트의 가격은 그 안에 들어있는 만두들의 가격의 합입니다. 상수는 모든 만두 세트들이 팔린다고 가정할 때 자신이 얻을 수 있는 최대 이익을 알고자 합니다. 이 때 이익은 판매한 만두 세트들의 가격의 합에서 승현이에게 구매한 상자들의 가격의 합을 뺀 값입니다. 상자에 넣지 않은 만두는 상수가 먹으면 되므로 이익에 영향을 주지 않습니다.
해야 할 일
상수가 만든 각 만두의 가격과 승현이가 판매하는 각 상자의 크기와 가격이 주어질 때, 상수가 얻을 수 있는 최대 이익을 구하는 프로그램을 작성하세요.
입력
- 첫 번째 줄에 상수가 만든 만두의 종류의 수 $M$과 승현이가 판매하는 상자의 종류의 수 $N$이 공백을 사이로 두고 주어집니다.
- $M$개 줄이 주어집니다. 이 중 $i$ ($1 \le i \le M$)번째 줄에는 $i$번 만두의 가격 $P_{i}$가 주어집니다.
- $N$개 줄이 주어집니다. 이 중 $j$ ($1 \le j \le N$)번째 줄에는 $i$번 상자에 넣을 수 있는 최대 만두의 수 $C_{j}$와 그 가격 $E_{j}$가 주어집니다.
출력 형식
첫 번째 줄에 상수가 얻을 수 있는 최대 이익을 출력합니다.
제약 조건
- $1 \le M \le 10,000$
- $1 \le N \le 500$
- $1 \le P_{i} \le 10,000$ ($1 \le i \le M$)
- $1 \le C_{j} \le 10,000$ ($1 \le j \le N$)
- $1 \le E_{j} \le 10,000$ ($1 \le j \le N$)
- 모든 $P_{i}$, $C_{j}$, $E_{j}$는 정수입니다.
서브태스크
서브태스크 1 [25점]
$N \le 10$
서브태스크 2 [25점]
$C_{j} \le 10$ ($1 \le j \le N$)
서브태스크 3 [40점]
추가적인 제약 조건이 없습니다.
예제
입력 | 출력 |
---|---|
4 3 180 160 170 190 2 100 3 120 4 250 |
480 |
상수는 승현이로부터 1번 상자 ($100$원)와 2번 상자 ($120$원)를 구매합니다. 상수는 1번 상자에 1번 만두와 2번 만두를 담아 $180 + 160 = 340$원에, 2번 상자에 3번 만두와 4번 만두를 담아 $170 + 190 = 360$원에 판매합니다. 이렇게 하면 이익은 $700 - 220 = 480$원입니다.
입력 | 출력 |
---|---|
2 2 1000 2000 1 6666 1 7777 |
0 |
상자가 더 비싸니까 그냥 아무것도 안 하는 것이 최선입니다.
입력 | 출력 |
---|---|
10 4 200 250 300 300 350 400 500 300 250 200 3 1400 2 500 2 600 1 900 |
450 |