Submission #1223932

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

#define ll long long

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

ll ans = 0;

int main(void){
    //freopen("input.txt", "r", stdin);
    cin>>w>>n;
    stuff.assign(n, {});
    stuffV.assign(n, 0);
    dp.assign(w+1, -1);
    times.assign(w+1, 0);
    dp[0] = 0;
    for(ll i = 0; i<n; i++){
        cin>>stuffV[i]>>stuff[i].first>>stuff[i].second;
    }

    for(ll i = 0; i<n; i++){
        times.assign(w+1, 0);
        for(ll 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) && (dp[j - stuff[i].first] != -1)){
                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;
    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...