구두 수선공
면접 대비시간 제한2초메모리 제한512 MB
각 작업이 기다리는 동안 지불하는 벌금 합계를 최소로 만들도록 N개 작업의 순서를 정하고, 최소가 여러 개면 사전순으로 가장 앞선 순서를 출력한다.
문제
구두 수선공에게 손님이 주문한 작업 개가 밀려 있다. 수선공은 하루에 한 작업만 진행할 수 있고, 번 작업을 끝내는 데 일이 걸린다. 는 정수이고 이다.
번 작업을 시작하기 전에 하루가 지연될 때마다 수선공은 보상금 센트를 지불해야 한다. 는 정수이고 이다. 보상금 총액이 가장 적어지는 작업 순서를 구하라.
순서를 정하면 번 작업은 앞에 놓인 작업들의 소요 일수를 합한 만큼 지연되어 시작한다. 따라서 보상금 총액은 각 작업의 지연 일수에 를 곱한 값을 모두 더한 값이다.
하루에 두 개 이상의 작업을 동시에 진행할 수 없다. 번 작업을 시작하면 그 작업을 마칠 때까지 다른 작업을 진행할 수 없다.
입력
첫째 줄에 정수 이 주어진다. 이다.
다음 개 줄 중 번째 줄에 와 가 공백으로 구분되어 주어진다.
출력
보상금 총액이 최소가 되는 작업 순서를 한 줄에 출력한다. 작업은 입력에 주어진 번호 부터 까지로 나타내고, 번호는 공백 한 칸으로 구분한다. 총액이 최소인 순서가 여러 개라면 사전순으로 가장 앞서는 순서를 출력한다.