Submission #1172383

#TimeUsernameProblemLanguageResultExecution timeMemory
1172383dbekarysKnapsack (NOI18_knapsack)C++20
37 / 100
331 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;
//vector<int>v[N];

int dp[10007][2007];
signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie();
    
    int m,n;
    cin>> m>>n;
    int a[n+1],b[n+1];
    vector<int>v1,v2,k;
    for(int i=1,count;i<=n;i++){
        cin>> b[i]>>a[i]>>count;
        k.push_back(count);
        for(int j=0;j<count;j++){
            v1.push_back(a[i]);
            v2.push_back(b[i]);
        }
        /*for (int power = 1; power <= count; power *= 2) {
            v1.push_back(a[i] * count);
            v2.push_back(b[i] * count);
            count -= power;
        }
        if (count > 0) {
            v1.push_back(a[i] * count);
            v2.push_back(b[i] * count);
        }*/
    }
    if(n == 1) {
        int s = m / a[1] ;
        if(s >= k[0]) {
            cout << b[1] * k[0] ;
        }
        else {
            cout << b[1] * s ;
        }
        return 0;
    }
    for(int i=1;i<=v1.size();i++){
        for(int j=1;j<=m;j++){
            dp[i][j]=dp[i-1][j];
            if(v1[i-1]<=j){
                dp[i][j]=max(dp[i][j],dp[i-1][j-v1[i-1]]+v2[i-1]);
            }
        }
    }
    cout<< dp[v1.size()][m];
}
#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...