가장 가치가 큰 선물을 주는 것이 므로 우선순위큐를 maxheap으로 설정해준뒤 하나씩 꺼내주며 선물을 처리해나간다.
(파이썬은 maxheap 설정을 따로 해줄 수 없으므로 대신 음수로 값을 넣어준뒤 뺄때는 다시 마이너스를 붙여서 뺸다.)
우선순위 큐를 통해 충전한 선물들을 가장 가치가 큰 순서대로 정렬한다. 만약 0을 입력 받으면 아이들을 만난 것이므로 가장 가치가 큰 선물을 뺀다. 이 과정을 반복한다.
from queue import PriorityQueue
que = PriorityQueue()
for i in range(int(input())):
num = list(map(int, input().split()))
if num[0] == 0:
if que.empty():
print(-1)
else:
print(que.get()*-1)
else:
for i in range(1, len(num)):
que.put(num[i]*-1)