Submission #1246673

#TimeUsernameProblemLanguageResultExecution timeMemory
1246673papauloKnapsack (NOI18_knapsack)C++20
73 / 100
1091 ms1928 KiB
#include <bits/stdc++.h> using namespace std; #define MAXS 2020 #define MAXN 100100 int dp[MAXS]; pair<pair<int, int>, int> items[MAXN]; int main() { memset(dp, 0, sizeof(dp)); cin.tie(nullptr); ios::sync_with_stdio(false); int s, n; cin >> s >> n; for(int i=0;i<n;i++) { cin >> items[i].first.first >> items[i].first.second >> items[i].second; } for(int i=0;i<n;i++) { int v=items[i].first.first, w=items[i].first.second, k=items[i].second; for(register int wm=0;wm<w;wm++) { deque<pair<int, int>> dq; register int cur=0; for(register int curw=wm; curw<=s; curw+=w) { if(!dq.empty()&&cur-dq.back().second>k) dq.pop_back(); while(!dq.empty()&&dq.front().first+(cur-dq.front().second)*v<=dp[curw]) dq.pop_front(); dq.push_front({dp[curw], cur}); dp[curw]=dq.back().first+(cur-dq.back().second)*v; cur++; } } } cout << dp[s] << endl; return 0; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:20:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   20 |         for(register int wm=0;wm<w;wm++) {
      |                          ^~
knapsack.cpp:22:26: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   22 |             register int cur=0;
      |                          ^~~
knapsack.cpp:23:30: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   23 |             for(register int curw=wm; curw<=s; curw+=w) {
      |                              ^~~~
#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...