Submission #634113

#TimeUsernameProblemLanguageResultExecution timeMemory
634113omeganotKnapsack (NOI18_knapsack)C++14
100 / 100
104 ms19680 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const ll mod = 1e9+7; const int inf = 1e9; const ll infll = 1e18; int s; int n; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> s >> n; vector<vector<pair<int,int>>> a(s+1); vector<vector<int>> b(s+1,{0}); for(int i=0;i<n;i++) { int v; int w; int k; cin >> v >> w >> k; a[w].push_back({v,k}); } for(int i=1;i<=s;i++) { sort(a[i].begin(),a[i].end(),greater<pair<int,int>>()); int j = 0; while(j<a[i].size()&&b[i].size()<=s+1) { b[i].push_back(a[i][j].first+b[i].back()); a[i][j].second--; if(!a[i][j].second) { j++; } } } vector<ll> dp(s+1); vector<ll> dp2(s+1); for(int i=1;i<=s;i++) { for(int j=s;j>=0;j--) { dp2[j] = max(dp[j],dp2[j]); for(int k=1;k*i<=s&&k<b[i].size();k++) { if(j+i*k<=s) { dp2[j+i*k] = max(dp2[j+i*k],dp[j]+b[i][k]); } } } swap(dp,dp2); fill(dp2.begin(),dp2.end(),0); } ll ans = 0; for(int i=1;i<=s;i++) { ans = max(ans,dp[i]); } cout << ans << "\n"; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:25:10: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |   while(j<a[i].size()&&b[i].size()<=s+1) {
      |         ~^~~~~~~~~~~~
knapsack.cpp:25:35: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   25 |   while(j<a[i].size()&&b[i].size()<=s+1) {
      |                        ~~~~~~~~~~~^~~~~
knapsack.cpp:38:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |    for(int k=1;k*i<=s&&k<b[i].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...