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

Envío 738

Problema 0xcf - Mirando al horizonte

  • Autor: cposada8
  • Fecha: 2020-09-15 02:43:41 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.03 s 3 KBi
#2
Correcto
0.023 s 3 KBi
#3
Correcto
0.027 s 3 KBi
#4
Correcto
0.051 s 7 KBi
#5
Correcto
0.03 s 7 KBi
#6
Correcto
0.505 s 46 KBi
#7
Correcto
0.52 s 43 KBi
#8
Correcto
0.809 s 59 KBi
#9
Correcto
0.489 s 50 KBi
#10
Correcto
0.705 s 61 KBi
Puntos totales: 100 / 100

Código

def mirar_horizonte(alturas):
    salidas = [None]*len(alturas)
    stack = []
    
    for i in reversed(range(len(alturas))):
        altura_actual = alturas[i]
        while(stack):
            ultima_altura =  stack[-1] # front of the stack
            if altura_actual>=ultima_altura:
                stack.pop()
            else:
                salidas[i] = ultima_altura
                break
        if not stack:
            salidas[i] = -1
        stack.append(altura_actual)
    
    return salidas


def print_case(case_index, answer):
    print(f"Case #{case_index+1}: {' '.join([str(h) for h in answer])}")
    

# mirando al horizonte
# 0xcf - Mirando al horizonte
C = int(input())
for case in range(C):
    N = int(input())
    alturas = [int(x) for x in input().split()]
    print_case(case, mirar_horizonte(alturas))