https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=python3
from heapq import heappop, heappush
def solution(operations):
answer = []
max_list = []
min_list = []
del_list = {}
cnt_insert = 0
cnt_delete = 0
for op in operations:
try:
if op[0] == 'I':
op = op.split()
heappush(max_list, -int(op[1]))
heappush(min_list, int(op[1]))
cnt_insert += 1
elif op == 'D -1':
while min_list[0] in del_list:
heappop(min_list)
del_list[heappop(min_list)] = 0
cnt_delete += 1
elif op == 'D 1':
while -max_list[0] in del_list:
heappop(max_list)
del_list[-heappop(max_list)] = 0
cnt_delete += 1
except:
pass
if cnt_delete == cnt_insert:
return [0, 0]
try:
while -max_list[0] in del_list:
heappop(max_list)
while min_list[0] in del_list:
heappop(min_list)
except:
pass
max_val = -max_list[0] if max_list else min_list[0]
min_val = min_list[0] if min_list else -max_list[0]
return [max_val, min_val]