結果

問題 No.618 labo-index
ユーザー Ryuto
提出日時 2018-03-05 19:25:46
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,427 bytes
コンパイル時間 337 ms
コンパイル使用メモリ 81,836 KB
実行使用メモリ 267,776 KB
最終ジャッジ日時 2024-09-13 13:02:13
合計ジャッジ時間 12,035 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other WA * 15 TLE * 1 -- * 19
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env python

import copy

Q = int(input())
events = []
for i in range(Q):
    events.append([int(x) for x in input().split()])

N = 0
addlist = [0]
keylist = []
totdiff = 0
dp = {}
for event in events:
    if event[0] == 1:
        x = event[1]
        N += 1
        addlist.append(x)
        keylist = sorted(list(set(keylist + [x])))
        for k in keylist:
            if k < x:
                dp[k] += 1
        if x in dp.keys():
            dp[x] += 1
        elif x == keylist[-1]:
            dp[x] = 1
        else:
            dp[x] = dp[keylist[keylist.index(x)+1]] + 1
    elif event[0] == 2:
        N -= 1
        x = addlist[event[1]] + totdiff
        for k in keylist:
            if k <= x:
                dp[k] -= 1
    elif event[0] == 3:
        x = event[1]
        totdiff += x
        keylist = [i+x for i in keylist]
        dp_new = {k:dp[k-x] for k in keylist}
        dp = copy.deepcopy(dp_new)

    ansdp = [(k, v) for k, v in dp.items() if k >= 0]
    if len(ansdp) == 0:
        print(0)
    else:
        ansdp.sort(reverse=True)
        for i, val in enumerate(ansdp):
            if val[1] >= val[0]:
                print(val[0])
                break
            elif i+1 == len(ansdp):
                print(val[1])
                break
            elif val[1] >= ansdp[i+1][0]:
                print(val[1])
                break
            else:
                continue
0