import heapq
import sys
input = sys.stdin.readline
# 연산의 개수 입력
n = int(input())
# 힙 초기화
calcul = []
for _ in range(n):
x = int(input())
if x != 0:
# 힙에 (절댓값, 원래값) 형태로 저장
heapq.heappush(calcul, (abs(x), x))
else:
if calcul:
# 절댓값이 가장 작은 값을 출력하고 제거
print(heapq.heappop(calcul)[1])
else:
# 힙이 비어있으면 0 출력
print(0)
풀이
x가 0이면 절댓값이 가장 작은 값을 출력+제거하고 x가 0이 아니면 (절댓값, 원래 값) 형태로 힙에 추가한다.
calcul 힙은 (절댓값, 원래 값)로 저장하는데 그럼 원소들 전부 절댓값을 기준으로 정렬된다.
그리고 힙이 비어있으면 0을 출력하고, 아니라면 heapq.heappop으로 절댓값이 가장 작은 값의 원본 값을 출력시킨다.