Submission #1335284

#TimeUsernameProblemLanguageResultExecution timeMemory
1335284isaacsunKnapsack (NOI18_knapsack)C++20
17 / 100
1 ms344 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

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

    int maxWeight, numItems;
    cin >> maxWeight >> numItems;

    vector<array<int, 2>> items;

    for(int i = 0; i < numItems; i++) {
        int value, weight, copies;
        cin >> value >> weight >> copies;

        copies = min(copies, maxWeight);
        int part = 1;
        while(copies >= part) {
            items.push_back({value * part, weight * part});
            copies -= part;
            part *= 2;
        }
        if(copies > 0) {
            items.push_back({value * part, weight * part});
        }
    }

    numItems = items.size();

    vector<int> dp(maxWeight + 1);
    for(int i = 0; i < numItems; i++) {
        for(int j = maxWeight; j - items[i][1] >= 0; j--) {
            dp[j] = max(dp[j], dp[j - items[i][1]] + items[i][0]);
        }
    }

    cout << dp[maxWeight];
}
#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...