Submission #1096603

#TimeUsernameProblemLanguageResultExecution timeMemory
1096603dchang0524Knapsack (NOI18_knapsack)C++17
0 / 100
1 ms604 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int S, N; cin >> S >> N; vector<ll> dp(S+1); unordered_map<int ,multiset<ll>> items; //<weight, multiset of values> for (int i = 0; i<N; i++) { ll V, W, K; cin >> V >> W >> K; int maxQ = S/W; while ((int)items[W].size() < maxQ && K>0) { items[W].insert(V); K--; } while (items[W].size() == maxQ && K>0 && V > *items[W].begin()) { items[W].erase(*items[W].begin()); items[W].insert(V); K--; } } vector<vector<ll>> choices(S+1, vector<ll>()); for (int i = 1; i<S+1; i++) { while (items[i].size()>0) { auto it = --items[i].end(); choices[i].push_back(*it); items[i].erase(*it); } } for (int i = 1; i<S+1; i++) { vector<ll> values = choices[i]; ll val = 0; int w = 0; for (int k = 0; k<values.size(); k++) { w += i; val += values[k]; for (int x = 1; x<S+1; x++) { if (x-w >= 0) { dp[x] = max(dp[x], dp[x-w] + val); } } } } ll ans = 0; for (int x = 1; x<S+1; x++) { ans = max(ans, dp[x]); } cout << ans << "\n"; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:24:32: warning: comparison of integer expressions of different signedness: 'std::multiset<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   24 |         while (items[W].size() == maxQ && K>0 && V > *items[W].begin()) {
      |                ~~~~~~~~~~~~~~~~^~~~~~~
knapsack.cpp:44:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         for (int k = 0; k<values.size(); k++) {
      |                         ~^~~~~~~~~~~~~~
#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...