█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 1564

Problema 0xde - Ordenar un arreglo grande

  • Autor: Serivt
  • Fecha: 2020-11-05 00:16:40 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.024 s 3 KBi
#2
Correcto
0.031 s 3 KBi
#3
Correcto
0.031 s 3 KBi
#4
Correcto
0.021 s 3 KBi
#5
Correcto
0.028 s 3 KBi
#6
Correcto
0.024 s 3 KBi
#7
Correcto
0.163 s 11 KBi
#8
Correcto
0.717 s 11 KBi
#9
Correcto
0.739 s 11 KBi
#10
Tiempo límite excedido
0.919 s 11 KBi
#11
Correcto
0.222 s 15 KBi
#12
Correcto
0.232 s 15 KBi
#13
Tiempo límite excedido
0.599 s 14 KBi
#14
Correcto
0.9 s 15 KBi
#15
Tiempo límite excedido
0.546 s 14 KBi
#16
Tiempo límite excedido
1.067 s 14 KBi
#17
Tiempo límite excedido
1.043 s 14 KBi
#18
Tiempo límite excedido
0.719 s 15 KBi
#19
Correcto
0.922 s 14 KBi
#20
Correcto
0.7 s 11 KBi
#21
Tiempo límite excedido
0.605 s 14 KBi
#22
Tiempo límite excedido
0.677 s 14 KBi
#23
Tiempo límite excedido
0.577 s 14 KBi
#24
Tiempo límite excedido
0.655 s 15 KBi
#25
Tiempo límite excedido
0.661 s 15 KBi
#26
Tiempo límite excedido
0.745 s 14 KBi
#27
Tiempo límite excedido
0.717 s 14 KBi
Puntos totales: 52 / 100

Código

def shift_right(arr, low, high):
    root = low
    while root * 2 + 1 <= high:
        left = root * 2 + 1
        right = left + 1
        swap = root
        if arr[swap] < arr[left]:
            swap = left
        if right <= high and arr[swap] < arr[right]:
            swap = right
        if swap != root:
            arr[root], arr[swap], root = arr[swap], arr[root], swap
        else:
            break

def heapify(arr, low, high):
    mid = (high - low - 1) // 2
    while mid >= 0:
        shift_right(arr, mid, high)
        mid -= 1

def heapsort(arr):
    if arr:
        length = len(arr)
        high = length - 1
        heapify(arr, 0, high)
        while high > 0:
            arr[high], arr[0] = arr[0], arr[high]
            high -= 1
            shift_right(arr, 0, high)


if __name__ == "__main__":
    n = input()
    arr = list(map(int, input().split(" ")))
    heapsort(arr)
    print(" ".join(map(str, arr)))