結果

問題 No.2741 Balanced Choice
ユーザー kabut000kabut000
提出日時 2024-04-21 13:08:10
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,226 bytes
コンパイル時間 716 ms
コンパイル使用メモリ 65,772 KB
実行使用メモリ 410,172 KB
最終ジャッジ日時 2024-10-13 11:42:07
合計ジャッジ時間 5,219 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 AC 215 ms
409,884 KB
testcase_06 AC 215 ms
409,888 KB
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>

#define MAX_N 5100
#define INF 1e9

long long dp[MAX_N][MAX_N][2];

int main(void) {
    int n, w, d;
    long long tn[MAX_N], wn[MAX_N], vn[MAX_N];
    std::cin >> n >> w >> d;
    for (int i=0; i<n; i++)
        std::cin >> tn[i] >> wn[i] >> vn[i];

    for (int i=0; i<MAX_N; i++)
        for(int j=0; j<MAX_N; j++)
            for (int k=0; k<2; k++) 
                dp[i][j][k] = INF;

    dp[0][0][0] = 0;
    dp[0][0][1] = 0;
    for (int i=0; i<n; i++) {
        for (int v=0; v<MAX_N; v++) {
            int t = tn[i];
            if(v-vn[i] >= 0) {
                if (dp[i+1][v][t] > dp[i][v-vn[i]][t]+wn[i]) {
                    dp[i+1][v][t] = dp[i][v-vn[i]][t]+wn[i];
                    dp[i+1][v][(t+1)%2] = dp[i][v-vn[i]][(t+1)%2];
                }
            } else {
                if (dp[i+1][v][t] > dp[i][v][t]) {
                    dp[i+1][v][t] = dp[i][v][t];
                    dp[i+1][v][(t+1)%2] = dp[i][v][(t+1)%2];
                }
            }
        }
    }

    long long ans = 0;
    for (int v=0; v<MAX_N; v++) {
        if (dp[n][v][0]+dp[n][v][1] <= w && std::abs(dp[n][v][0]-dp[n][v][1]) <= d)
            ans = v;
    }
    std::cout << ans << std::endl;
}
0