#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
#define ll long long
#define vi vector<int>
#define sza(x) ((int)x.size())
#define all(a) (a).begin(), (a).end()
#define loop(i, s, e) for(int (i) = (s); (i) < (e); (i)++)
#define dbg(a) cerr << "debug " << #a << ": " << (a) << endl
#define prt(a) cerr << (a) << ' ';
ll mod = 998244353;
int gcd(int a, int b)
{
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
void solve(){
int s, n; cin >> s >> n;
vector<int> v(n), w(n), k(n);
for(int i = 0; i < n; i++){
cin >> v[i] >> w[i] >> k[i];
}
vector<int> dp(s + 1, -1);
dp[0] = 0;
for(int i = 0; i < n; i++){
for(int j = s; j >= 0; j--){
if(dp[j] == -1) continue;
for(int a = 1; j + a * w[i] <= s && a <= k[i]; a++){
int nw = j + a * w[i];
int np = dp[j] + a * v[i];
dp[nw] = max(dp[nw], np);
}
}
}
// for(auto it: dp) prt(it);
int ans = 0;
for(int i = 0; i < s + 1; i++) ans = max(ans, dp[i]);
cout << ans << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// cout.setf(ios::fixed);
// freopen("family.in", "r", stdin);
// freopen("family.out", "w", stdout);
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}
| # | 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... |