파이썬의
heapq모듈은 최소 힙으로 구현되어 있기 때문에 최대 힙 구현을 위해서는 트릭이 필요하다.힙에 원소를 추가할 때
(-num, num)의 튜플 형대로 넣어주면 튜플의 첫 번째 원소를 우선순위로 힙을 구성하게 된다.이때 원소 값의 부호를 바꿨기 때문에, 최소 힙으로 구현되었던
heapq모듈을 최대 힙 구현에 활용할 수 있다.
heapq 를 최대 힙으로 구현한다.import sys
import heapq
input = sys.stdin.readline
heap = []
for _ in range(int(input())):
num = int(input())
if not num:
print(heapq.heappop(heap)[1] if len(heap) else 0)
else:
heapq.heappush(heap, (-num, num))