Para efeitos da nota atribuída à resolução de exercícios ao longo do semestre - Submeter até 23:59 de 12 de abril
(o problema continuará depois disponível para submissão, mas sem contar para a nota)
[para perceber o contexto do problema deve ler o guião da aula #04]


[DAA 014] O problema do sapateiro

Um sapateiro tem N encomendas de pares de sapatos que precisa de fabricar. Durante um determinado dia um sapateiro só pode trabalhar num único par de sapatos e depois de começar só pode passar para outro par depois de ter terminado o par que tinha começado a fazer.

Para cada par de sapatos, o sapateiro sabe exactamente o tempo em dias que demora a executar esse trabalho. Sabe também qual a multa que tem de pagar por cada dia de atraso antes do início de cada um dos pares.

Por exemplo, imagina que o sapateiro tem dois pares de sapatos encomendados: (1) demora 10 dias e tem multa de 10 euros; (2) demora 14 dias e tem multa também de 10 euros. Se optar por começar logo pelo par (1), consegue começar o (2) ao fim de 10 dias e logo paga uma multa de 100 euros (10 dias * 10 euros). Se optar antes por começar pelo par (2), então só pode começar o (1) ao fim de 14 dias e logo pagaria uma multa de 140 euros (14 dias * 10 euros).

Consegues ajudar o sapateiro a decidir quam a ordem em que deve fabricar os sapatos para minimizar a multa total a pagar?

O Problema

Dado um conjunto de N encomendas de sapatos, cada um com a respectiva duração e multa por dia, a tua tarefa é determinar qual a ordem em que o sapateiro deve tratar das encomendas de modo a pagar a menor multa possível.

Input

Na primeira linha do input vem um número N indicando o número de encomendas a processar.

Seguem-se N linhas, cada uma indicando a i-ésima encomenda. Cada uma destas linhas tem dois inteiros: Di e Mi, indicando respectivamente a duração e multa por dia do i-ésimo par de sapatos. Nota que as encomendas são "numeradas" de 1 até N: a primeira é a 1, a segunda a 2, etc.

Output

O output deve ser constituído pela sequência de encomendas a processar de modo a minimizar a multa a pagar. Uma encomenda é representada pelo seu número no input, pelo que o output é uma permutação dos números de 1 até N. Os números da sequência devem vir separados por um espaço.

Se existirem múltiplas soluções que dêm origem à mesma multa, imprima a solução que seja menor lexicograficamente, isto é, que comece pelo número mais baixo, em caso de empate pelo 2º número mais baixo e por aí adiante.

Restrições

São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:

1 ≤ N ≤ 1 000     Quantidade de encomendas de pares de sapatos
0 ≤ Di ≤ 1 000     Duração de uma encomenda
0 ≤ Mi ≤ 1 000     Multa de uma encomenda

Exemplo de Input

4
3 4
1 1000
2 2
5 5

Exemplo de Output

2 1 3 4

Explicação do Input/Output

A solução é começar pelo segundo sapato (D=1, M=1000), depois o primeiro sapato (D=3, M=4), depois o terceiro sapato (D=2, M=2) e finalmente o quarto sapato (D=5, M=5).


Desenho e Análise de Algoritmos (CC2001)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto