fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define int long long
  6. #define endl "\n"
  7. #define sz(x) (int)(x).size()
  8. #define all(x) (x).begin(),(x).end()
  9. #define f0(i,n) for(int i=0;i<n;i++)
  10. #define f1(i,n) for(int i=1;i<=n;i++)
  11. #define faster ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  12. const int N = 1e5 + 5;
  13. int w[105], v[105], dp[105][N];
  14. int32_t main()
  15. {
  16. faster
  17.  
  18. int n, W, sum_v = 0;
  19. cin>>n>>W;
  20. f1(i, n) {
  21. cin>>w[i]>>v[i];
  22. sum_v += v[i];
  23. }
  24.  
  25. // dp[i][j] = tổng trọng lượng nhỏ nhất từ 1 -> i để có giá trị là j
  26.  
  27.  
  28. f0(i, n+1){
  29. for(int j=0;j<=sum_v;++j) dp[i][j] = 1e18;
  30. }
  31. dp[0][0] = 0;
  32.  
  33. f1(i, n) {
  34. for(int j=0; j<=sum_v; ++j) {
  35. dp[i][j] = dp[i-1][j];
  36. if(j - v[i] >= 0) {
  37. dp[i][j] = min(dp[i][j], dp[i-1][j-v[i]] + w[i]);
  38. }
  39. }
  40. }
  41.  
  42. for(int j=sum_v; j>=0; --j) {
  43. if(dp[n][j] <= W) {
  44. cout<<j;
  45. return 0;
  46. }
  47. }
  48.  
  49.  
  50. }
  51.  
Success #stdin #stdout 0.01s 5572KB
stdin
Standard input is empty
stdout
Standard output is empty