각 건물의 꼭대기에서 최종 양중 능력이 목표 이상이 되도록 크레인을 배치하되, 출력을 사전순으로 가장 작게 만드는 계획을 구한다.
보통7그리디정렬동적 계획법구현아직 제출이 없습니다시간 제한4초메모리 제한512 MB나이츠브리지의 고층 건물은 크레인으로 짓는다. 크레인을 땅에 세우려면 건물만큼 높은 크레인이 필요하니, 현장에서는 더 작은 크레인을 탑 위에 올려서 쓴다. 그러면 다음 문제가 생긴다. 그 크레인을 어떻게 꼭대기까지 올리는가. 답은 더 작은 크레인으로 들어 올리는 것이다. 그 작은 크레인마저 무거우면 더 작은 크레인이 그것을 들어 올린다. 이렇게 내려가면 기술자가 주머니에 넣어 들고 올라갈 만큼 가벼운 크레인에 닿는다.
크레인은 N대가 있다. i번 크레인의 무게는 Wi킬로그램이고, 들어 올릴 수 있는 최대 무게는 Li킬로그램이다. 공사 중인 건물은 M개이고, i번 건물은 마지막에 꼭대기에 선 크레인이 Ti킬로그램을 들어 올리면 요구를 만족한다.
건물 하나에 적용되는 규칙은 다음과 같다.
모든 건물의 요구를 만족하는 계획을 구하라.
모든 건물의 요구를 만족시킬 수 없으면 impossible을 출력한다.
만족시킬 수 있으면 M개의 줄을 출력한다. i번째 줄에는 i번 건물에 올리는 크레인의 번호를 올리는 순서대로 공백을 사이에 두고 출력한다.
요구를 만족하는 계획은 여러 개일 수 있다. 그중 다음 기준으로 가장 작은 계획을 출력한다. 먼저 두 계획의 첫째 줄을 정수의 나열로 비교한다. 처음으로 서로 다른 자리에서 수가 작은 쪽이 작고, 그 자리까지 수가 모두 같은데 한쪽이 먼저 끝나면 짧은 쪽이 작다. 첫째 줄이 같으면 둘째 줄을 같은 방법으로 비교하고, 그다음 줄도 같은 방법으로 계속 비교한다.