fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const long long MaxN = 2e5 + 5;
  5.  
  6. long long n, W; // n: số loại đồ vật, W: sức chứa tối đa của balo
  7. long long w, v, c; // w: khối lượng, v: giá trị, c: số lượng của một loại đồ vật
  8. long long dp[MaxN]; // dp[j]: giá trị lớn nhất đạt được với sức chứa j
  9.  
  10. int main()
  11. {
  12. ios_base::sync_with_stdio(0);
  13. cin.tie(0);
  14.  
  15. cin >> n >> W;
  16.  
  17. for(long long i = 1; i <= n; i++)
  18. {
  19. cin >> w >> v >> c;
  20.  
  21. long long k = 1;
  22.  
  23. while(k <= c)
  24. {
  25. for(long long j = W; j >= k * w; j--)
  26. {
  27. dp[j] = max(dp[j], dp[j - k * w] + k * v);
  28. }
  29.  
  30. c -= k;
  31. k <<= 1;
  32. }
  33.  
  34. if(c > 0)
  35. {
  36. for(long long j = W; j >= c * w; j--)
  37. {
  38. dp[j] = max(dp[j], dp[j - c * w] + c * v);
  39. }
  40. }
  41. }
  42.  
  43. cout << dp[W];
  44. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty