結果

問題 No.3076 Goodstuff Deck Builder
ユーザー nikoro256
提出日時 2025-03-28 21:53:18
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 704 bytes
コンパイル時間 314 ms
コンパイル使用メモリ 82,308 KB
実行使用メモリ 77,644 KB
最終ジャッジ日時 2025-03-28 21:53:25
合計ジャッジ時間 5,755 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 5 TLE * 1 -- * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

N,M=map(int,input().split())
l=[]
for i in range(N):
    c,d=map(int,input().split())
    l.append((c,d))
l.sort(reverse=True)
"""
dp[i番目まで見て][使ったコストがk][j個すでに選んでる時]の時ダメージの最小値
N*20*M
"""
from copy import deepcopy
inf = 10**18
dp=[[0]*(11) for _ in range(M+1)]
exp=[2**i for i in range(11)]
for i in range(N):
    c,d=l[i]
    dp_d=[[0]*(11) for _ in range(M+1)]
    for j in range(M+1):
        for k in range(11):
            dp_d[j][k]=max(dp_d[j][k],dp[j][k])
            if k+1<11 and j+exp[k]*c<=M:
                j_d = j+exp[k]*c
                dp_d[j_d][k+1]=max(dp_d[j_d][k+1],dp[j][k]+d)
    dp = deepcopy(dp_d)
print(max(dp[-1]))
0