Submission #1297154

#TimeUsernameProblemLanguageResultExecution timeMemory
1297154NipphitchKnapsack (NOI18_knapsack)C++20
100 / 100
48 ms1892 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=2005;

int n,m,dp[N];
vector <pair <int,int>> v1[N],v2;

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> m >> n;
    for(int i=1;i<=n;i++){
        int v,w,k;
        cin >> v >> w >> k;
        v1[w].push_back({v,k});
    }
    for(int i=1;i<N;i++) sort(v1[i].begin(),v1[i].end(),greater <pair <int,int>>());
    for(int i=1;i<N;i++){
        int idx=0;
        for(int j=1;j<=m/i;j++){
            if(idx>=v1[i].size()) continue;
            v2.push_back({i,v1[i][idx].first});
            v1[i][idx].second--;
            if(v1[i][idx].second==0) idx++;
        }
    }
    for(auto [w,v]:v2) for(int i=m;i>=1;i--) if(w<=i) dp[i]=max(dp[i],dp[i-w]+v);
    cout << dp[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...