結果

問題 No.3077 Goodstuff Deck Builder(Hard)
ユーザー NortGlG
提出日時 2025-04-20 10:55:01
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
RE  
実行時間 -
コード長 837 bytes
コンパイル時間 2,169 ms
コンパイル使用メモリ 196,800 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-04-20 10:55:12
合計ジャッジ時間 9,039 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 37 WA * 5 RE * 15
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
struct A {
    int v, w;
    bool operator < (const A& o) const {
        return w < o.w;
    }
} a[10010];
ll dp[2][10010];
int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    int n, m;
    cin >> n >> m;
    for (int i = 1;i <= n;i++) {
        cin >> a[i].w >> a[i].v;
    }
    sort(a + 1, a + 1 + n);
    for (int i = 1;i <= n;i++) {
        int now = i & 1, prev = 1 - now;
        for (int j = 0;j <= m;j++) {
            dp[now][j] = max(dp[prev][j], dp[now][j - 1]);
            // 2 * x + w = j
            if (j < a[i].w) continue;
            if ((j + a[i].w) % 2 == 1) continue;
            int x = (j - a[i].w) / 2;
            dp[now][j] = max(dp[now][j], dp[prev][x] + a[i].v);
        }
    }
    cout << dp[n & 1][m] << '\n';
    return 0;
}
0