제출 #1346464

#제출 시각아이디문제언어결과실행 시간메모리
1346464SW_143Knapsack (NOI18_knapsack)C++20
73 / 100
1096 ms1604 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<int> w(N+1, 0); 
    vector<int> v(N+1, 0); 
    vector<int> k(N+1, 0); 
    
    for(int i = 1; i<=N; ++i)
    {
        cin>>v[i]>>w[i]>>k[i];
    }
    
    vector<ll> prev(S+1, 0), curr(S+1, 0);
    
    for(int i = 1; i<=N; ++i)
    {
        for(int j = 1; j<=S; ++j)
        {
            curr[j] = prev[j];
            
            for(int idk = 0; idk<=min(k[i], j/w[i]); ++idk)
            {
                curr[j] = max(prev[j - idk*w[i]] + (ll)idk*v[i], curr[j]);
            }
        }
        
        swap(prev, curr);
        fill(curr.begin(), curr.end(), 0);
    }
    
    cout<<prev[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...