Submission #1271341

#TimeUsernameProblemLanguageResultExecution timeMemory
1271341tinyfoldKnapsack (NOI18_knapsack)C++20
100 / 100
88 ms2888 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 2100; vector<pair<int, int>> vecs[N]; int dp[N]; int k, n, x, y, z; void solve(int x, int y) { for (int i = k; i >= x; i--) { dp[i] = max(dp[i], dp[i - x] + y); } } signed main() { cin >> k >> n; while (n--) { cin >> x >> y >> z; vecs[y].push_back({x, z}); } for (int i = 1; i <= k; i++) { sort(vecs[i].begin(), vecs[i].end()); for (int j = 1; j <= k / i && vecs[i].size(); j++) { solve(i, vecs[i].back().first); if (!--vecs[i].back().second) vecs[i].pop_back(); } } cout << dp[k] << endl; 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...