Submission #1346494

#TimeUsernameProblemLanguageResultExecution timeMemory
1346494SW_143Knapsack (NOI18_knapsack)C++20
100 / 100
687 ms8732 KiB
#include <bits/stdc++.h>
#define ll long long int

using namespace std;

int main()
{   
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    
    int S, N; cin>>S>>N; 
    
    vector<pair<int,int>> items;
    
    for(int i = 1; i<=N; ++i)
    {
        int v, w, k; cin>>v>>w>>k;
        int cap = min(k, S/w); 
        int rem = cap; 
        
        for(int b = 1; rem>0; b*=2)
        {
            int idk = min(b, rem); 
            items.push_back({w*idk, v*idk}); 
            rem -= idk;
        }
    }
    
    vector<ll> dp(S+1, 0);
    
    for(auto [w,v]: items)
    {
        for(int j = S; j>=w; --j)
        {
            dp[j] = max(dp[j], dp[j-w] + v);
        }
    }
    
    cout<<dp[S]<<'\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...