結果

問題 No.2804 Fixer And Ratism
ユーザー ra5anchorra5anchor
提出日時 2024-07-13 19:30:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,172 ms / 2,000 ms
コード長 1,242 bytes
コンパイル時間 270 ms
コンパイル使用メモリ 82,152 KB
実行使用メモリ 77,460 KB
最終ジャッジ日時 2024-07-13 19:30:16
合計ジャッジ時間 14,106 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 36 ms
53,140 KB
testcase_01 AC 34 ms
52,972 KB
testcase_02 AC 35 ms
53,024 KB
testcase_03 AC 508 ms
76,852 KB
testcase_04 AC 261 ms
77,008 KB
testcase_05 AC 129 ms
77,424 KB
testcase_06 AC 155 ms
76,956 KB
testcase_07 AC 138 ms
76,364 KB
testcase_08 AC 103 ms
76,984 KB
testcase_09 AC 113 ms
76,536 KB
testcase_10 AC 110 ms
77,460 KB
testcase_11 AC 882 ms
76,972 KB
testcase_12 AC 293 ms
77,264 KB
testcase_13 AC 240 ms
76,752 KB
testcase_14 AC 288 ms
76,224 KB
testcase_15 AC 97 ms
76,620 KB
testcase_16 AC 203 ms
76,432 KB
testcase_17 AC 294 ms
76,356 KB
testcase_18 AC 259 ms
76,572 KB
testcase_19 AC 95 ms
76,400 KB
testcase_20 AC 80 ms
76,464 KB
testcase_21 AC 1,055 ms
76,824 KB
testcase_22 AC 80 ms
76,580 KB
testcase_23 AC 1,062 ms
76,768 KB
testcase_24 AC 183 ms
76,536 KB
testcase_25 AC 1,169 ms
76,540 KB
testcase_26 AC 449 ms
77,156 KB
testcase_27 AC 166 ms
76,324 KB
testcase_28 AC 1,172 ms
76,784 KB
testcase_29 AC 382 ms
76,580 KB
testcase_30 AC 505 ms
76,976 KB
testcase_31 AC 161 ms
76,244 KB
testcase_32 AC 863 ms
76,796 KB
testcase_33 AC 35 ms
52,524 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

# from sortedcontainers import SortedSet, SortedList, SortedDict
# S1 = SortedList([])
# S2 = SortedList([])

S1 = []
S2 = []

N, Q = map(int, input().split())
now = N

rate = dict()
out = []

for q in range(Q):
    L = list(map(str, input().split()))
    if L[0] == '1':
        s, r = L[1], int(L[2])
        # レートr、名前sが来る
        rate[s] = r
        # S2.add((r, s))
        S2.append((r, s))

    elif L[0] == '2':
        x = int(L[1])
        # x個のpcが壊れる
        now -= x

    elif L[0] == '3':
        s, x = L[1], int(L[2])
        # 名前sがx個を治す
        now += x
        
        if (rate[s], s) in S2:
            S2.remove((rate[s], s))
            S1.append((rate[s], s))
        # S2.discard((s, rate[s]))
        # S1.add((s, rate[s]))

    # 退場
    N1 = len(S1)
    N2 = len(S2)
    Ntot = N1 + N2
    Nout = Ntot - now
    outnow = []
    outN2 = min(Nout, N2)
    outN1 = Nout - outN2
    S1.sort(reverse=True)
    S2.sort(reverse=True)
    for i in range(outN2):
        a = S2.pop()
        outnow.append(a)
    for i in range(outN1):
        a = S1.pop()
        outnow.append(a)
    outnow.sort()
    for r,s in outnow:
        out.append(s)

for item in out:
    print(item)
0