結果
問題 | No.2804 Fixer And Ratism |
ユーザー |
|
提出日時 | 2025-02-12 15:26:22 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,148 bytes |
コンパイル時間 | 428 ms |
コンパイル使用メモリ | 82,252 KB |
実行使用メモリ | 87,352 KB |
最終ジャッジ日時 | 2025-02-12 15:26:34 |
合計ジャッジ時間 | 10,749 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | WA * 31 |
ソースコード
import bisectfrom collections import defaultdictn, q = map(int, input().split())Sr = [] # ソート済みリスト(条件により移動される要素用)Sn = [] # ソート済みリスト(初期状態の要素用)D = defaultdict(int)for _ in range(q):A = input().split()if A[0] == "1":s = A[1]r = int(A[2])D[s] = r# Sn に (r, s) をソート済みリストのまま追加bisect.insort(Sn, (r, s))elif A[0] == "2":x = int(A[1])n -= xelse: # クエリタイプ "3" と仮定s = A[1]x = int(A[2])n += xtup = (D[s], s)# Sr に (r, s) をソート済みリストとして追加bisect.insort(Sr, tup)# Sn から tup を削除i = bisect.bisect_left(Sn, tup)if i < len(Sn) and Sn[i] == tup:Sn.pop(i)# Sn と Sr の合計要素数が n を超えている間、最小の要素を取り出すwhile len(Sn) + len(Sr) > n:if Sn:r, s = Sn.pop(0)print(s)else:r, s = Sr.pop(0)print(s)