Submission #1331928

#TimeUsernameProblemLanguageResultExecution timeMemory
1331928piolkKnapsack (NOI18_knapsack)C++20
0 / 100
0 ms344 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

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

    vector<tuple<int,int,int>> l(n);
    for (int i=0;i<n;i++){
        int v,w,k;
        cin>>v>>w>>k;
        l[i]={v,w,k};
    }

    vector<int> dp(s+7,-1); //max value with weight
    dp[0]=0;

    for (auto [v,w,k]:l){
        vector<int> uses(s+7);
        for (int i=w;i<=s;i++){
            if (dp[i-w]==-1) continue;
            if (uses[i-w]==k) continue;
            if (dp[i-w]+v>s) continue;

            if (dp[i-w]+v>dp[i] || dp[i]==-1){
                dp[i]=dp[i-w]+v;
                uses[i]=uses[i-w]+1;
            }
        }
    }

    int ans=0;
    for (int i=0;i<=s;i++) ans=max(ans,dp[i]);

    cout<<ans<<"\n";

    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...