結果
問題 |
No.2804 Fixer And Ratism
|
ユーザー |
![]() |
提出日時 | 2024-07-13 19:08:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 176 ms / 2,000 ms |
コード長 | 1,197 bytes |
コンパイル時間 | 452 ms |
コンパイル使用メモリ | 81,836 KB |
実行使用メモリ | 76,732 KB |
最終ジャッジ日時 | 2024-07-13 19:08:28 |
合計ジャッジ時間 | 6,698 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
from heapq import * from collections import defaultdict N, Q0 = map(int, input().split()) dic1 = defaultdict(int) dic2 = defaultdict(int) Q = [] ans = [] upd = set() for q in range(Q0): t, *sr = input().split() if t == "1": s, r = sr r = int(r) dic1[s] = r dic2[s] = 0 heappush(Q,(0, r, s)) tmp = [] while N + len(upd) < len(Q): a, b, s = heappop(Q) if a == 0 and (a,b,s) in upd: upd.remove((a,b,s)) continue tmp.append((b,s)) tmp.sort() for t, s in tmp: ans.append(s) elif t == "2": x = int(sr[0]) N = max(0, N - x) tmp = [] while N + len(upd) < len(Q): a, b, s = heappop(Q) if a == 0 and (a,b,s) in upd: upd.remove((a,b,s)) continue tmp.append((b,s)) tmp.sort() for t, s in tmp: ans.append(s) else: s, x = sr x = int(x) N += x if dic2[s] == 0: upd.add((0,dic1[s], s)) heappush(Q,(1,dic1[s],s)) dic2[s] = 1 for s in ans: print(s)