Submission #1297905

#TimeUsernameProblemLanguageResultExecution timeMemory
1297905lunarechoKnapsack (NOI18_knapsack)C++20
73 / 100
380 ms2084 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int n,s;
ll dp[105][2005], v[105], k[105]; 
int w[105];

ll dp_(int i, int wt){
    if(i==0 || wt==0)   
        return 0;
    if(dp[i][wt] != -1)
        return dp[i][wt];
    ll nt = dp_(i-1, wt);
    ll t = 0;
    for(ll j=1;j<=min(k[i], (ll)wt/w[i]);++j) 
        t = max(t, dp_(i-1, wt-j*w[i]) + j * v[i]);
    return dp[i][wt] = max(nt, t);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin>>s>>n;

    for(int i=1;i<=n;++i) 
        cin>>v[i]>>w[i]>>k[i];

    memset(dp,-1,sizeof(dp));

    cout<<dp_(n,s);

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