fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4. const int MAXN = 1e5 + 5;
  5.  
  6.  
  7. int s, n, v[MAXN], w[MAXN], k[MAXN], dp[MAXN];
  8.  
  9. void sub1(){
  10. for(int i = 1; i <= n; ++i){
  11. for(int j = s; j >= w[i]; --j){
  12. dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
  13. }
  14. }
  15. cout << dp[s];
  16. }
  17.  
  18. void sub2(){
  19. for(int i = 1; i <= n; ++i){
  20. for(int j = s; j >= w[i]; --j){
  21. for(int q = 1; q <= k[i] and q * w[i] <= j; ++q){
  22. dp[j] = max(dp[j], dp[j - q * w[i]] + q * v[i]);
  23. }
  24. }
  25. }
  26.  
  27. cout << dp[s];
  28. }
  29.  
  30. signed main(){
  31. ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  32. freopen("B4.inp", "r", stdin);
  33. freopen("B4.out", "w", stdout);
  34. cin >> s >> n; int maxk = 0;
  35. for(int i = 1; i <= n; ++i){
  36. cin >> v[i] >> w[i] >> k[i];
  37. maxk = max(maxk, k[i]);
  38. }
  39.  
  40. if(maxk == 1) sub1();
  41. else sub2();
  42.  
  43.  
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
Standard output is empty