관련 문제인 "컨퍼런스"에 나온 대형 바이토닉 컨퍼런스(Great Bitonic Conference)를 기억할 것이다. 그 주최 측이 다시 도움을 청한다.
기존 등록 시스템은 이미 예약된 티켓 중 일부를 취소해 컨퍼런스 수익을 극대화했다. 참가자가 줄면 빌려야 하는 방도 줄어 비용이 낮아지기 때문이다. 하지만 참가자들은 이를 싫어한다. 하나의 예약에는 함께 예약한 여러 장의 티켓이 묶여 있는데, 기존 시스템은 한 예약의 일부만 취소하고 나머지는 남길 수 있었기 때문이다. 이제 수익은 그대로 극대화하되, 예약은 통째로만 취소할 수 있도록(한 예약의 모든 티켓을 남기거나 모두 취소) 시스템을 바꾸어야 한다.
발표는 m개 있다. 발표 i의 참가자는 각자 티켓 값 ci를 낸다. 한 발표의 참가자들은 한 개당 k명을 수용하는 방에 앉으며, 방 하나를 빌리는 비용은 s이다. 발표 i가 참가자 t명을 남기면 방 ⌈t/k⌉개가 필요하고, 수익은 ci⋅t−s⋅⌈t/k⌉이 된다. 각 발표는 서로 독립적이다.
티켓 값, 방 수용 인원, 방 대여 비용, 예약 목록을 읽어, 예약을 통째로만 취소할 수 있을 때 얻을 수 있는 최대 총수익을 계산해 출력하는 프로그램을 작성하라.
첫째 줄에 네 정수 m, l, k, s (1≤m≤100, 2≤l≤1000000, 2≤k≤400, 1≤s≤1000)가 공백 하나로 구분되어 주어진다. 각각 발표의 수, 예약의 수, 방 하나의 수용 인원, 방 하나를 빌리는 비용을 뜻한다.
둘째 줄에는 m개의 정수 c1,c2,…,cm이 공백 하나로 구분되어 주어진다. ci는 발표 i의 티켓 값이며, ci≤s와 ci⋅⌊k/2⌋≥s를 만족한다(방이 절반만 차도 이미 이득이 나도록 하는 조건이다).
이어지는 l개의 줄에는 각 예약이 두 정수 pi와 ri (1≤pi≤m, 1≤ri≤1000)로 공백 하나로 구분되어 주어진다. 각각 발표 번호와 그 예약으로 잡은 티켓 수를 뜻한다. 예약은 통째로만 취소할 수 있다.
예약을 통째로만 취소해서 얻을 수 있는 최대 총수익을 정수 하나로 출력한다.