結果
問題 | No.2741 Balanced Choice |
ユーザー |
|
提出日時 | 2024-04-21 03:33:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,271 bytes |
コンパイル時間 | 2,209 ms |
コンパイル使用メモリ | 202,724 KB |
最終ジャッジ日時 | 2025-02-21 07:45:32 |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | WA * 10 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll = long long;int main() {int n, w, d;cin >> n >> w >> d;vector<pair<int, int>> t[2];for (int i = 0; i < n; i++) {int ti, wi, vi;cin >> ti >> wi >> vi;t[ti].emplace_back(wi, vi);}vector dp(2, vector(w + 1, 0));for (const auto p : {0, 1}) {const auto &v = t[p];for (int i = 0; i < v.size(); i++) {const auto [wi, vi] = v[i];auto nxt = vector(w + 1, 0);for (int j = 0; j <= w; j++) {if (j - wi >= 0) {if (p == 0 && dp[p][j - wi] == 0 && j - wi != 0) {continue;}nxt[j] = max(dp[p][j - wi] + vi, dp[p][j]);} else {nxt[j] = dp[p][j];}}swap(dp[p], nxt);}}int ans = 0;for (int i = 0; i <= w; i++) {if (i != 0 && dp[0][i] == 0) {continue;}const auto rw = w - i;const auto cur = dp[0][i] + dp[1][min(i + d, rw)];if (rw < i - d) {continue;}ans = max(ans, cur);}cout << ans << endl;return 0;}