만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구두 수선공

면접 대비

시간 제한2초메모리 제한512 MB

요약
각 작업이 기다리는 동안 지불하는 벌금 합계를 최소로 만들도록 N개 작업의 순서를 정하고, 최소가 여러 개면 사전순으로 가장 앞선 순서를 출력한다.
난이도

보통10점 중 5점

유형
그리디, 정렬
정답자
아직 제출이 없습니다

문제

구두 수선공에게 손님이 주문한 작업 NN개가 밀려 있다. 수선공은 하루에 한 작업만 진행할 수 있고, ii번 작업을 끝내는 데 TiT_i일이 걸린다. TiT_i는 정수이고 1≤Ti≤10001 \le T_i \le 1000이다.

ii번 작업을 시작하기 전에 하루가 지연될 때마다 수선공은 보상금 SiS_i센트를 지불해야 한다. SiS_i는 정수이고 1≤Si≤100001 \le S_i \le 10000이다. 보상금 총액이 가장 적어지는 작업 순서를 구하라.

순서를 정하면 ii번 작업은 앞에 놓인 작업들의 소요 일수를 합한 만큼 지연되어 시작한다. 따라서 보상금 총액은 각 작업의 지연 일수에 SiS_i를 곱한 값을 모두 더한 값이다.

하루에 두 개 이상의 작업을 동시에 진행할 수 없다. ii번 작업을 시작하면 그 작업을 마칠 때까지 다른 작업을 진행할 수 없다.

입력

첫째 줄에 정수 NN이 주어진다. 1≤N≤10001 \le N \le 1000이다.

다음 NN개 줄 중 ii번째 줄에 TiT_i와 SiS_i가 공백으로 구분되어 주어진다.

출력

보상금 총액이 최소가 되는 작업 순서를 한 줄에 출력한다. 작업은 입력에 주어진 번호 11부터 NN까지로 나타내고, 번호는 공백 한 칸으로 구분한다. 총액이 최소인 순서가 여러 개라면 사전순으로 가장 앞서는 순서를 출력한다.

예제3

  1. 예제 1

    입력
    4
    3 4
    1 1000
    2 2
    5 5
    
    예상 출력
    2 1 3 4
    
  2. 예제 2

    입력
    1
    1000 10000
    
    예상 출력
    1
    
  3. 예제 3

    입력
    2
    1 10000
    1000 1
    
    예상 출력
    1 2