Devil's Hell deLivery
시간 제한2초메모리 제한1024 MB
K개의 물건을 N대의 트럭에 나눠 싣고, 모든 물건을 배달하는 최소 단계 수와 단계별 배정을 출력합니다.
문제
Devil's Hell deLivery 회사는 말 그대로 모든 것을 배송한다. 상자, 소포, 패킷, 데이터그램 등이 그 대상이다.
A 도시에서 B 도시까지의 배송은 다음과 같이 진행된다. 대의 트럭과 개의 물건이 있다. 번 트럭의 용량은 이다. 번 물건의 무게는 이다. 트럭은 한 번 이상 배송 단계를 거친다.
한 단계에서는 일부 물건을 일부 트럭에 싣는다. 물건은 쪼갤 수 없다. 각 트럭에 배정된 물건의 총 무게는 그 트럭의 용량을 넘을 수 없다. 모든 트럭은 동시에 출발한다.
각 단계가 끝나면 모든 트럭은 출발했던 곳으로 돌아온다. 남은 물건이 있으면 다음 단계를 진행한다.
단계 수가 최소가 되도록 물건을 단계와 트럭에 나누어 배정하라.
입력
입력에는 최대 100개의 테스트 케이스가 들어 있다.
각 테스트 케이스는 트럭 수 과 물건 수 를 나타내는 두 정수로 시작한다 (, ). 다음 줄에는 트럭의 용량 이 개의 정수로 주어진다 (). 그다음 줄에는 물건의 무게 가 개의 정수로 주어진다 ().
출력
각 테스트 케이스에 대해 배송이 불가능하면 정수 만 적은 한 줄을 출력한다.
그렇지 않으면 필요한 단계 수 를 적은 한 줄을 출력한다. 이 값은 반드시 최소여야 한다. 이어서 각 단계를 설명하는 개의 줄을 출력한다. 각 단계 설명은 그 단계에서 배송하는 물건 수 로 시작하고, 뒤이어 개의 쌍 가 온다. 한 쌍은 물건 를 트럭 에 배정한다는 뜻이다.
최적해가 여러 개라면 그중 아무거나 하나를 출력하면 된다.