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

Envío 3432

Problema 0xde - Ordenar un arreglo grande

  • Autor: jocarmp08
  • Fecha: 2021-03-13 19:17:45 UTC (Hace alrededor de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.025 s 3 KBi
#2
Correcto
0.026 s 3 KBi
#3
Correcto
0.026 s 3 KBi
#4
Correcto
0.04 s 4 KBi
#5
Correcto
0.023 s 3 KBi
#6
Correcto
0.025 s 3 KBi
#7
Correcto
0.172 s 5 KBi
#8
Correcto
0.163 s 7 KBi
#9
Correcto
0.16 s 5 KBi
#10
Correcto
0.304 s 9 KBi
#11
Correcto
0.282 s 14 KBi
#12
Correcto
0.183 s 14 KBi
#13
Esperando resultado...
#14
Tiempo límite excedido
1.062 s 14 KBi
#15
Tiempo límite excedido
1.061 s 14 KBi
#16
Esperando resultado...
#17
Esperando resultado...
#18
Esperando resultado...
#19
Esperando resultado...
#20
Correcto
0.19 s 5 KBi
#21
Tiempo límite excedido
1.059 s 14 KBi
#22
Esperando resultado...
#23
Esperando resultado...
#24
Esperando resultado...
#25
Esperando resultado...
#26
Esperando resultado...
#27
Tiempo límite excedido
1.022 s 16 KBi
Puntos totales: 49 / 100

Código

def three_way_part(a, lo, hi):
    if hi <= lo:
        return

    lt = lo
    i = lo + 1
    gt = hi
    pivot = a[lo]

    while i <= gt:
        if a[i] < pivot:
            a[lt], a[i] = a[i], a[lt]
            lt += 1
            i += 1
        elif a[i] > pivot:
            a[i], a[gt] = a[gt], a[i]
            gt -= 1
        else:
            i += 1

    three_way_part(a, lo, lt - 1)
    three_way_part(a, gt + 1, hi) 

def qs(a, n):
    three_way_part(a, 0, n - 1)

n = int(input())
a = [int(x) for x in input().split()]

if n > 1:
    qs(a, n)
print(*a)