#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |