# Topic : Data_Structur_2  _ 최대 힙
#
# PyPy 3 : 232ms

import sys
import heapq

N = int(sys.stdin.readline())
heap = []

for _ in range(N):
  x = int(sys.stdin.readline())
  if x != 0:
      heapq.heappush(heap, (-x,x))

  else:
    try:
      print(heapq.heappop(heap)[1])
    except:
      print(0)

heapq module

  1. heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조를 제공한다.
  2. 최소 힙을 사용하면 원소들이 항상 정렬된 상태로 추가되고 삭제되며, 최소 힙에서 가장 작은값은 언제나 인덱스 0, 즉, 이진 트리의 루트에 위치한다.
  3. 내부적으로 모든 원소는 항상 자식 원소보다 크기가 작거나 같도록 추가된다.
  4. 튜플을 원소로 추가시 튜플의 첫번째 값을 기준으로 정렬된다.(튜플을 사용하면 다양한 응용이 가능하다!)

heapq - Heap queue algorithm - Python 3.10.4 documentation