Submission #1223926

#TimeUsernameProblemLanguageResultExecution timeMemory
1223926opeleklanosKnapsack (NOI18_knapsack)C++20
12 / 100
1 ms328 KiB
#include <iostream>
#include <vector>
using namespace std;

vector<pair<int, int>> stuff;
vector<int> stuffV;
vector<int> dp;
vector<int>times;
int w, n;

int ans = 0;

int main(void){
   // freopen("input.txt", "r", stdin);
    cin>>w>>n;
    stuff.assign(n, {});
    stuffV.assign(n, 0);
    dp.assign(w+1, 0);
    times.assign(w+1, 0);

    for(int i = 0; i<n; i++){
        cin>>stuffV[i]>>stuff[i].first>>stuff[i].second;
    }

    for(int i = 0; i<n; i++){
        times.assign(w+1, 0);
        for(int j = stuff[i].first; j<=w; j++){
            if((dp[j] < dp[j - stuff[i].first] + stuffV[i]) && (times[j-stuff[i].first] < stuff[i].second)){
                times[j] = times[j-stuff[i].first] + 1;
                dp[j] = dp[j - stuff[i].first] + stuffV[i];
            }

            ans = max(ans, dp[j]);
        }
    }
    cout<<ans<<endl;
}
#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...