Submission #724041

#TimeUsernameProblemLanguageResultExecution timeMemory
724041ivazivaKnapsack (NOI18_knapsack)C++14
100 / 100
136 ms5236 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; struct Produkt{ ll v,w,k; }; int main(){ ios::sync_with_stdio(0); cin.tie(nullptr); cout << fixed << setprecision(8); int s,n; cin >> s >> n; vector<priority_queue<pair<ll,ll>>> weights(s+1); vector<Produkt> p; for(int i = 0;i<n;i++){ Produkt pt; cin >> pt.v >> pt.w >> pt.k; weights[pt.w].push({pt.v,pt.k}); } for(int i = 1;i<=s;i++){ ll anzahl = s/i; while(anzahl && !weights[i].empty()){ pair<ll,ll> f = weights[i].top(); weights[i].pop(); Produkt px; px.w = i; px.v = f.first; for(int j = 0;j<min(anzahl,f.second);j++){ p.push_back(px); } anzahl -= min(anzahl, f.second); } } vector<ll> dp(s+1,0); ll ans = 0; for(int i = 0;i<(int)p.size();i++){ for(int j = p[i].w;j<=s;j++){ dp[j-p[i].w] = max(dp[j-p[i].w],dp[j] + p[i].v); ans = max(ans,dp[j-p[i].w]); } } cout << ans; }
#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...