Submission #1132326

#TimeUsernameProblemLanguageResultExecution timeMemory
1132326viwlesxqKnapsack (NOI18_knapsack)C++20
100 / 100
35 ms3400 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { cin.tie(nullptr)->sync_with_stdio(false); int s, n; cin >> s >> n; int v[n], w[n], k[n]; vector<multiset<int>> mx(s + 1); for (int i = 0; i < n; ++i) { cin >> v[i] >> w[i] >> k[i]; while (k[i]--) { if (mx[w[i]].size() < s / w[i] || *mx[w[i]].begin() < v[i]) { mx[w[i]].insert(v[i]); if (mx[w[i]].size() > s / w[i]) mx[w[i]].erase(mx[w[i]].begin()); } else break; } } int dp[s + 1]; memset(dp, 0, sizeof(dp)); for (int i = 1; i <= s; ++i) for (int x : mx[i]) for (int p = s; p >= i; --p) dp[p] = max(dp[p - i] + x, dp[p]); cout << *max_element(dp, dp + s + 1); }
#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...