Submission #866586

#TimeUsernameProblemLanguageResultExecution timeMemory
86658612345678Knapsack (NOI18_knapsack)C++17
73 / 100
1089 ms1372 KiB
#include <bits/stdc++.h> using namespace std; const int nx=2e3+5; int s, n, v, w, k, dp[2][nx], mx; priority_queue<int, vector<int>, greater<int>> pq[nx]; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>s>>n; for (int i=0; i<n; i++) { cin>>v>>w>>k; for (int j=0; j<min(k, s/w); j++) { pq[w].push(v); if (pq[w].size()>s/w) pq[w].pop(); } } vector<pair<int, int>> d; for (int i=1; i<=s; i++) { while (!pq[i].empty()) { auto x=pq[i].top(); pq[i].pop(); d.push_back({i, x}); } } for (int i=0; i<d.size(); i++) { int c=i%2, p=1-c; v=d[i].second; w=d[i].first; //cout<<v<<' '<<w<<'\n'; for (int j=1; j<=s; j++) { dp[c][j]=dp[p][j]; if (j>=w) dp[c][j]=max(dp[c][j], dp[p][j-w]+v); mx=max(mx, dp[c][j]); } } cout<<mx; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:19:29: warning: comparison of integer expressions of different signedness: 'std::priority_queue<int, std::vector<int>, std::greater<int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   19 |             if (pq[w].size()>s/w) pq[w].pop();
      |                 ~~~~~~~~~~~~^~~~
knapsack.cpp:32:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |     for (int i=0; i<d.size(); i++)
      |                   ~^~~~~~~~~
#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...