Corrigir o heap

Dado um max-heap com n números, todos os elementos estão garantidos de cumprir a propriedade do max-heap, exceto a raiz. O seu objetivo é corrigir o heap, garantindo que todos os valores atendam corretamente à propriedade do max-heap.

Entrada

A primeira linha da entrada contém um único inteiro n (1 ≤ n ≤ 100 000).
A linha seguinte contém n números inteiros separados por espaços (), representando os valores dos elementos no heap.

Saída

O programa deve imprimir n números separados por espaço, correspondendo ao heap corrigido.

Exemplos

Entrada
Saída
7 -1 9 7 1 3 6 5
9 5 7 1 -1 6 3
8 -2 7 5 2 1 3 4 1
7 2 5 1 1 3 4 -2

Explicação

Exemplo 1 demonstrado. O gráfico à esquerda representa o heap inicial. O da direita mostra o heap depois de corrigido.
Exemplo 1 demonstrado. O gráfico à esquerda representa o heap inicial. O da direita mostra o heap depois de corrigido.
 
Exemplo 2 demonstrado. O gráfico à esquerda representa o heap inicial. O da direita mostra o heap depois de corrigido.
Exemplo 2 demonstrado. O gráfico à esquerda representa o heap inicial. O da direita mostra o heap depois de corrigido.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue