Submission #1163120

#TimeUsernameProblemLanguageResultExecution timeMemory
116312069godKnapsack (NOI18_knapsack)C++20
37 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int s, n; cin >> s >> n; vector<pair<int, pair<int, int>>> vpp; for (int i = 0; i < n; i++) { int x, y, z; cin >> x >> y >> z; vpp.push_back({x, {y, z}}); } if (n == 1) { int d = s / vpp[0].first; cout << min(vpp[0].second.second, d) * (vpp[0].second.first); return 0; } vector<pair<int, int>> vp; for (auto it : vpp) { int reward = it.first; int cost = it.second.first; int quantity = it.second.second; int cur = 1; while (quantity > 0) { int take = min(cur, quantity); vp.push_back({cost * take, reward * take}); quantity -= take; cur *= 2; } } vector<int> dp(s + 1, 0); for (auto it : vp) { int cost = it.first; int reward = it.second; for (int j = s; j >= cost; j--) { dp[j] = max(dp[j], dp[j - cost] + reward); } } cout << *max_element(dp.begin(), dp.end()); 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...