Submission #745410

#TimeUsernameProblemLanguageResultExecution timeMemory
745410pemguimnKnapsack (NOI18_knapsack)C++14
100 / 100
66 ms5188 KiB
#include <bits/stdc++.h> #define int long long #define pii pair<int, int> #define pb push_back #define gcd __gcd #define endl "\n" #define task "hihi" using namespace std; const int N = 2e3 + 5, MOD = 1e9 + 7; int n, s, dp[N]; vector<pii> items[N]; vector<pii> obj; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); //freopen(task".inp", "r", stdin); //freopen(task".out", "w", stdout); cin >> s >> n; for(int i = 1; i <= n; i++){ int v, w, k; cin >> v >> w >> k; items[w].pb({v, k}); } for(int i = 1; i <= s; i++){ sort(items[i].begin(), items[i].end(), [](pii x, pii y){return x.first > y.first;}); int lim = s / i; for(pii x : items[i]){ for(int j = 1; j <= min(lim, x.second); j++){ obj.pb({x.first, i}); } lim -= x.second; } } for(pii x : obj){ for(int i = s; i >= x.second; i--){ dp[i] = max(dp[i], dp[i - x.second] + x.first); } } int ans = 0; for(int i = s; i >= 0; i--) ans = max(ans, dp[i]); cout << ans; 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...