結果

問題 No.2686 商品券の使い道
ユーザー rlangevinrlangevin
提出日時 2024-03-24 19:04:27
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 640 ms / 3,000 ms
コード長 752 bytes
コンパイル時間 149 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 92,544 KB
最終ジャッジ日時 2024-09-30 13:53:53
合計ジャッジ時間 17,934 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 32 ms
52,352 KB
testcase_01 AC 35 ms
51,712 KB
testcase_02 AC 177 ms
79,968 KB
testcase_03 AC 151 ms
79,616 KB
testcase_04 AC 151 ms
80,000 KB
testcase_05 AC 148 ms
79,744 KB
testcase_06 AC 147 ms
80,048 KB
testcase_07 AC 146 ms
79,964 KB
testcase_08 AC 141 ms
80,340 KB
testcase_09 AC 153 ms
79,936 KB
testcase_10 AC 148 ms
80,128 KB
testcase_11 AC 153 ms
80,420 KB
testcase_12 AC 152 ms
79,872 KB
testcase_13 AC 148 ms
79,872 KB
testcase_14 AC 149 ms
79,872 KB
testcase_15 AC 158 ms
80,000 KB
testcase_16 AC 156 ms
79,792 KB
testcase_17 AC 157 ms
79,616 KB
testcase_18 AC 151 ms
80,512 KB
testcase_19 AC 151 ms
80,016 KB
testcase_20 AC 156 ms
78,108 KB
testcase_21 AC 152 ms
79,804 KB
testcase_22 AC 151 ms
79,872 KB
testcase_23 AC 147 ms
79,872 KB
testcase_24 AC 151 ms
79,744 KB
testcase_25 AC 151 ms
79,816 KB
testcase_26 AC 149 ms
79,744 KB
testcase_27 AC 147 ms
79,872 KB
testcase_28 AC 146 ms
80,152 KB
testcase_29 AC 605 ms
92,160 KB
testcase_30 AC 577 ms
92,284 KB
testcase_31 AC 594 ms
92,032 KB
testcase_32 AC 588 ms
92,160 KB
testcase_33 AC 579 ms
92,160 KB
testcase_34 AC 594 ms
92,160 KB
testcase_35 AC 596 ms
92,232 KB
testcase_36 AC 595 ms
92,032 KB
testcase_37 AC 607 ms
92,468 KB
testcase_38 AC 579 ms
92,160 KB
testcase_39 AC 587 ms
92,164 KB
testcase_40 AC 601 ms
92,348 KB
testcase_41 AC 568 ms
92,368 KB
testcase_42 AC 606 ms
92,288 KB
testcase_43 AC 590 ms
92,288 KB
testcase_44 AC 640 ms
92,204 KB
testcase_45 AC 612 ms
92,288 KB
testcase_46 AC 596 ms
92,544 KB
evil_random20_1.txt AC 572 ms
92,032 KB
evil_random20_2.txt AC 601 ms
92,428 KB
evil_random20_3.txt AC 582 ms
92,100 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline

def zeta(A, N, op):
    for i in range(N):
        for bit in range(1 << N):
            if (bit & (1 << i)):
                A[bit] = op(A[bit], A[bit^(1<<i)])
    return A


N, M, Q = map(int, input().split())
A, B = [0] * N, [0] * N
for i in range(N):
    A[i], B[i] = map(int, input().split())
    
N2 = 1 << N
inf = 10 ** 18
dpM, dpQ = [-inf] * N2, [-inf] * N2
for s in range(N2):
    x, y = 0, 0
    for i in range(N):
        if (s >> i) & 1:
            x += A[i]
            y += B[i]
    if x <= M:
        dpM[s] = y
    if x <= Q:
        dpQ[s] = y
        
dpM = zeta(dpM, N, max)
dpQ = zeta(dpQ, N, max)
ans = 0
for s in range(N2):
    ans = max(ans, dpM[s] + dpQ[(N2 - 1) ^ s])
    
print(ans)    
0