Advertisement
Josif_tepe

Untitled

Jun 1st, 2025
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. typedef long long ll;
  5. int n,W;
  6. int x[100][2];
  7. ll dp[101][100001];
  8. const ll INF = 1e13;
  9. ll rec(int at, int V) {
  10.     if(V == 0) {
  11.         return 0;
  12.     }
  13.     if(at >= n) {
  14.         return INF;
  15.     }
  16.     if(dp[at][V] != -1) {
  17.         return dp[at][V];
  18.     }
  19.     ll res = INF;
  20.    
  21.     res = min(res, rec(at + 1, V));
  22.     if(V >= x[at][1]) {
  23.         res = min(res, rec(at + 1, V - x[at][1]) + x[at][0]);
  24.     }
  25.     dp[at][V] = res;
  26.     return res;
  27. }
  28.  
  29. int main()
  30. {
  31.     memset(dp, -1, sizeof dp);
  32.     cin>>n>>W;
  33.     int sum = 0;
  34.     for(int i = 0;i<n;i++){
  35.         cin>>x[i][0];
  36.         cin>>x[i][1];
  37.         sum += x[i][1];
  38.     }
  39.    
  40.     for(int i = sum; i >= 0; i--) {
  41.         if(rec(0, i) <= W) {
  42.             cout << i << endl;
  43.             return 0;
  44.         }
  45.     }
  46.    
  47.     return 0;
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement