https://www.acmicpc.net/problem/11279
import sys
n = int(sys.stdin.readline())
heap = [0]*(2^31)
hn = 0
def push(x):
global hn
hn += 1
heap[hn] = x
i = hn
while i :
if i == 1:
# 1이 아닐 때만 돌게 하기
# 왜냐면... 1일때 돌면 0이랑 바꾼다.
break
if heap[i//2] < heap[i]:
heap[i//2], heap[i] = heap[i], heap[i//2]
else:
break
i //= 2
def pop():
global hn
ans = heap[1]
# 나갈 값 저장해놓고
heap[1] = heap[hn]
# 제일 위에 가장 마지막 값을 넣는다.
heap[hn] = 0
# 가장 마지막 값은 초기화하고
hn -=1
# 줄었기 때문에 -1한다.
i = 1
while i:
if i*2 > hn :
break
if heap[i] > heap[i*2] and heap[i] > heap[i*2+1]:
break
elif heap[i*2] > heap[i*2+1]:
heap[i], heap[i*2] = heap[i*2], heap[i]
i = i*2
else:
heap[i], heap[i*2+1] = heap[i*2+1], heap[i]
i = i*2+1
return ans
while n:
n -= 1
k = int(sys.stdin.readline())
if k >0:
push(k)
else:
if hn == 0:
print(0)
else:
print(pop())