ABC306 - E - Best Performances
問題
上位の最小値と下位の最大値を見ればクエリを処理できる。
code: e.py
N, K, Q = map(int, input().split())
S = 0
MS = SortedMultiset(0 * K) MT = SortedMultiset(0 * (N-K)) ans = []
for _ in range(Q):
x, y = map(int, input().split())
x -= 1
if MT.gt(y) is None:
MS.add(y)
S += y
else:
n = MT.pop()
S += n
MS.add(n)
MT.add(y)
else:
if MS.lt(y) is None:
MT.add(y)
else:
n = MS.pop(0)
S -= n
S += y
MT.add(n)
MS.add(y)
ans.append(S)
printa(*ans)