AtCoder Beginner Contest 212 D - Querying Multiset【Python】

https://atcoder.jp/contests/abc212/tasks/abc212_d

AtCoder ProblemsでDifficulty: 775、Solve Probability: 31%でした。

操作2の足された数の和を記録しておき、操作1でその和をXiから引いたものをheapqで管理、操作3ではその和をXiに足したものを取り出すようにしたところ解くことができました。

import heapq as hq

Q = int(input())

q = []
sum_add = 0
for i in range(Q):
    query = list(map(int, input().split()))
    if query[0] == 1:
        hq.heappush(q, query[1] - sum_add)
    elif query[0] == 2:
        sum_add += query[1]
    else:
        print(hq.heappop(q) + sum_add)