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

Envío 2383

Problema 0xde - Ordenar un arreglo grande

  • Autor: Felipe
  • Fecha: 2020-12-15 18:06:25 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.03 s 3 KBi
#2
Correcto
0.032 s 3 KBi
#3
Correcto
0.026 s 3 KBi
#4
Correcto
0.031 s 3 KBi
#5
Correcto
0.026 s 3 KBi
#6
Correcto
0.029 s 3 KBi
#7
Correcto
0.992 s 11 KBi
#8
Correcto
0.72 s 11 KBi
#9
Tiempo límite excedido
1.037 s 5 KBi
#10
Tiempo límite excedido
1.066 s 9 KBi
#11
Correcto
0.816 s 15 KBi
#12
Correcto
0.763 s 15 KBi
#13
Correcto
0.787 s 15 KBi
#14
Tiempo límite excedido
1.009 s 14 KBi
#15
Tiempo límite excedido
1.035 s 15 KBi
#16
Tiempo límite excedido
1.043 s 14 KBi
#17
Tiempo límite excedido
1.086 s 14 KBi
#18
Tiempo límite excedido
1.046 s 15 KBi
#19
Tiempo límite excedido
1.068 s 14 KBi
#20
Correcto
0.857 s 11 KBi
#21
Tiempo límite excedido
1.017 s 14 KBi
#22
Correcto
0.993 s 15 KBi
#23
Correcto
0.959 s 15 KBi
#24
Tiempo límite excedido
1.064 s 15 KBi
#25
Correcto
0.816 s 15 KBi
#26
Tiempo límite excedido
0.995 s 14 KBi
#27
Tiempo límite excedido
1.023 s 14 KBi
Puntos totales: 56 / 100

Código

def merge(arr, left, right):
    
    arr_ptr = 0
    left_ptr = 0
    right_ptr = 0

    while left_ptr < len(left) and right_ptr < len(right):

        if(left[left_ptr] < right[right_ptr]):
    
            arr[arr_ptr] = left[left_ptr]
            left_ptr += 1

        elif (right[right_ptr] <= left[left_ptr]):
    
            arr[arr_ptr] = right[right_ptr]
            right_ptr += 1
    
        arr_ptr += 1


    while left_ptr < len(left):
        arr[arr_ptr] = left[left_ptr]
        left_ptr += 1
        arr_ptr += 1

    while right_ptr < len(right):
        arr[arr_ptr] = right[right_ptr]
        right_ptr += 1
        arr_ptr += 1

def sort(arr):

    left = 0
    right = len(arr)


    if len(arr) <= 1:

        return arr
    
    mid = (left + right) // 2

    left_arr = arr[left:mid]
    right_arr = arr[mid:right]

    sort(left_arr)
    sort(right_arr)
    merge(arr, left_arr, right_arr)

n = int(input())
items = [int(i) for i in input().split(" ")]

sort(items)

print(" ".join([str(i) for i in items]))

"""
  0 1 2   3 4 5
  1 2 3 | 4 5 6
  L   R | L   R

  left: 0, right: 6, mid: 3
    left: 0, right: 3, mid: 1
        left: 0, right: 1 
        left: 2, right: 3
    left: 4, right: 6, mid: 5
        left: 4, right: 5, mid 4
        left: 6, right: 6, mid: 6

"""