import sys, bisect
'''
你如果把每個值都塞到 list
list 太長造成每個 insert , sort , pop 都很耗時
可以用一個 dict 來記錄每個值出現的次數
'''
f = [] # 要維護的 list
d = {} # 記錄每個值出現的次數
for s in sys.stdin:
if(s == '2\n'): # Query MAX
p = f[-1]
print(p)
d[p] -= 1
if(d[p] == 0): f.pop()
'''
印出尾部最大值
計數減一
計數為零才 pop()
'''
elif(s == '3\n'): # Query MIN
p = f[0]
print(p)
d[p] -= 1
if(d[p] == 0): f.pop(0)
'''
印出頭部最小值
計數減一
計數為零才 pop(0)
'''
else: # Insert
t = int(s.replace('1 ',''))
if(d.__contains__(t)): d[t] += 1
else: d[t] = 1
'''
計數不存在時設為 1
反之加 1
'''
if(d[t] == 1):
bisect.insort_left(f, t)
'''
如為新成員才 insert
利用 bisect.insort_left = insert and sort
'''
2020/04/08
[zerojudge] a091: 今晚打老虎
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言