結果

問題 No.2804 Fixer And Ratism
ユーザー flippergoflippergo
提出日時 2024-11-13 09:09:06
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 159 ms / 2,000 ms
コード長 1,668 bytes
コンパイル時間 511 ms
コンパイル使用メモリ 82,584 KB
実行使用メモリ 76,672 KB
最終ジャッジ日時 2024-11-13 09:09:14
合計ジャッジ時間 7,575 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 40 ms
54,772 KB
testcase_01 AC 39 ms
53,612 KB
testcase_02 AC 45 ms
53,908 KB
testcase_03 AC 100 ms
76,308 KB
testcase_04 AC 87 ms
76,204 KB
testcase_05 AC 80 ms
76,208 KB
testcase_06 AC 127 ms
76,484 KB
testcase_07 AC 88 ms
76,672 KB
testcase_08 AC 88 ms
76,368 KB
testcase_09 AC 71 ms
73,036 KB
testcase_10 AC 84 ms
76,008 KB
testcase_11 AC 115 ms
76,484 KB
testcase_12 AC 112 ms
76,320 KB
testcase_13 AC 92 ms
76,248 KB
testcase_14 AC 108 ms
76,584 KB
testcase_15 AC 74 ms
73,332 KB
testcase_16 AC 116 ms
76,248 KB
testcase_17 AC 88 ms
76,068 KB
testcase_18 AC 133 ms
76,584 KB
testcase_19 AC 69 ms
70,224 KB
testcase_20 AC 80 ms
76,240 KB
testcase_21 AC 130 ms
75,992 KB
testcase_22 AC 69 ms
71,036 KB
testcase_23 AC 156 ms
76,260 KB
testcase_24 AC 149 ms
76,008 KB
testcase_25 AC 149 ms
76,476 KB
testcase_26 AC 147 ms
76,176 KB
testcase_27 AC 151 ms
76,244 KB
testcase_28 AC 147 ms
76,244 KB
testcase_29 AC 148 ms
76,204 KB
testcase_30 AC 147 ms
76,512 KB
testcase_31 AC 159 ms
76,192 KB
testcase_32 AC 147 ms
76,260 KB
testcase_33 AC 41 ms
53,612 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import heapq
N,Q = map(int,input().split())
tot = N
cnt = N
que = []
ast = set()
for _ in range(Q):
    qry = list(input().split())
    if qry[0]=="1":
        s,r = qry[1:]
        r = int(r)
        heapq.heappush(que,(r,s))
        if cnt>0:
            cnt -= 1
        else:
            while True:
                r0,s0 = heapq.heappop(que)
                if s0 not in ast:
                    print(s0)
                    break
                else:
                    if r0>=10000:
                        ast.discard(s0)
                        print(s0)
                        break
                    else:
                        r0 += 10000
                        heapq.heappush(que,(r0,s0))
    elif qry[0]=="2":
        x = int(qry[1])
        if cnt>=x:
            cnt -= x
            tot -= x
        else:
            d = x-cnt
            tot -= cnt
            cnt = 0
            outs = []
            while d>0:
                r,s = heapq.heappop(que)
                if s not in ast:
                    tot -= 1
                    d -= 1
                    heapq.heappush(outs,(r,s))
                else:
                    if r>=10000:
                        r -= 10000
                        tot -= 1
                        ast.discard(s)
                        d -= 1
                        heapq.heappush(outs,(r,s))
                    else:
                        r += 10000
                        heapq.heappush(que,(r,s))
            while outs:
                r,s = heapq.heappop(outs)
                print(s)
    else:
        s,x = qry[1:]
        x = int(x)
        ast.add(s)
        tot += x
        cnt += x
0