제출 #1256217

#제출 시각아이디문제언어결과실행 시간메모리
1256217ishrak0hasinKnapsack (NOI18_knapsack)C++20
100 / 100
36 ms2976 KiB
#include <bits/stdc++.h>
using namespace std;

#define fast ios_base::sync_with_stdio(0); cin.tie(nullptr);
#define ll long long

int main() {
    fast;
    ll w,n;
    cin>>w>>n;
    vector<priority_queue<pair<ll,ll>>>b(w+1);
    for(ll i=0;i<n;i++){
        ll vl,q,wt;
        cin>>vl>>wt>>q;
        b[wt].push({vl,q});
    }
    vector<ll>dp(w+1,0);
    for(ll i=1;i<=w;i++){
        ll ft=w/i;
        while(!b[i].empty() && ft>0){
            auto[vl,q]=b[i].top();
            b[i].pop();
            if(q>ft) q=ft;

            ft-=q;
            for(ll j=0;j<q;j++){
                for(ll k=w;k>=i;k--){
                    dp[k]=max(dp[k],dp[k-i]+vl);
                }
            }
        }
    }
    cout<<*max_element(dp.begin(),dp.end())<<'\n';
}
#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...