작업 스케줄링
시간 제한1초메모리 제한128 MB
시작 시각이 늦을수록 수행 시간이 길어지는 작업들이 있을 때, 전체 완료 시각을 최소로 하는 순서를 찾고 동일한 최솟값이 여럿이면 사전순으로 가장 앞선 순서를 출력한다.
문제
번부터 번까지 번호가 매겨진, 서로 독립적이며 나눌 수 없는 작업 개가 있다. 이 작업들은 중간에 쉬는 시간 없이 어떤 순서로든 하나씩 차례대로 실행되며, 시작 시각은 이다. 작업을 늦게 시작할수록 실행 시간이 길어진다. 즉, 작업 를 시각 에 시작하면 실행에 의 시간이 걸리며, 여기서 , 이다. 따라서 각 작업은 시각을 에서 로 진행시킨다.
전체 실행 시간은 마지막 작업이 끝나는 시각이다. 이 전체 실행 시간이 최소가 되도록 작업 순서를 정하는 것이 목표이다.
과 각 작업의 계수 , 를 읽어, 전체 실행 시간을 최소로 만드는 작업 순서를 출력하는 프로그램을 작성하라. 전체 실행 시간이 최소가 되는 순서가 여러 개라면, 그중 사전순으로 가장 앞서는 것을 출력한다(작업 번호 수열을 앞에서부터 자리별로 비교한다).
입력
- 첫째 줄에 작업의 개수 이 주어진다.
- 이어지는 개의 줄에는 각각 음이 아닌 실수 와 가 공백 하나로 구분되어 주어진다. 각 수는 소수점 아래 정확히 여섯 자리까지 표기된 표준 십진수 형식이다. 이 개 줄 중 번째 줄은 작업 의 계수를 나타낸다.
출력
선택한 작업 순서를 의 순열로, 한 줄에 작업 번호 하나씩 출력한다. 전체 실행 시간을 최소로 만드는 순서가 둘 이상이면, 그중 사전순으로 가장 앞서는 순서를 출력한다.