Submission #1297862

#TimeUsernameProblemLanguageResultExecution timeMemory
1297862chayiKnapsack (NOI18_knapsack)C++20
12 / 100
2 ms572 KiB
#include <bits/stdc++.h>

using namespace std;

struct Item {
    int v, w, n;
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int s, n;
    cin >> s >> n;

    vector<Item> items(n);
    for (int i = 0; i < n; i++) {
        cin >> items[i].v >> items[i].w >> items[i].n;
    }

    vector<long long int> dp(s + 1, -1);
    vector<long long int> re_count(s + 1);
    dp[0] = 0;

    for (int i = 0; i < n; i++) {
        re_count.assign(s + 1, items[i].n);
        vector<long long int> ndp(s + 1);
        ndp = dp;
        for (int j = 0; j <= s; j++) {
            if (re_count[j] > 0 && j + items[i].w <= s && ndp[j] + items[i].v > dp[j + items[i].w] && ndp[j] >= 0) {
                ndp[j + items[i].w] = ndp[j] + items[i].v;
                re_count[j + items[i].w] = re_count[j] - 1;
            }
        }
        swap(dp, ndp);
    }
    long long int ans = 0;
    for (auto i : dp) {
        ans = max(ans, i);
    }
    cout << ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...