Submission #1303676

#TimeUsernameProblemLanguageResultExecution timeMemory
1303676zhenKnapsack (NOI18_knapsack)C++17
100 / 100
440 ms2844 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); // freopen("template.in", "r", stdin); // freopen("template.out", "w", stdout); ll s, n; cin >> s >> n; vector<ll> v(n + 1), w(n + 1), k(n + 1); for (ll i = 1; i <= n; ++i){ cin >> v[i] >> w[i] >> k[i]; } vector<ll> f(s + 1); ll cval; ll l; vector<ll> mq1(s + 3); vector<ll> mq2(s + 3); ll front = 0, back = 0; for (ll i = 1; i <= n; ++i){ for (ll j = 0; j < w[i]; ++j){ front = 0; back = 0; for (ll c = j, l = 0; c <= s; c += w[i], ++l){ cval = f[c] - l * v[i]; if (front < back && mq2[front] == l - k[i] - 1){++front;} while (front < back && mq1[back - 1] < cval){--back;} mq1[back] = cval; mq2[back] = l; ++back; f[c] = mq1[front] + l * v[i]; } } } cout << f[s]; }
#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...