Advertisement
vitormartinotti

Untitled

Oct 24th, 2024
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.55 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5.  
  6. ll memo[110][100010];
  7.  
  8. const ll INF = 1e11+10;
  9.  
  10. int v[110], w[110];
  11. int N, W;
  12.  
  13.  
  14. ll dp(int i, int cap){
  15.     if(cap < 0) return -INF;
  16.     if(i == N) return 0;
  17.  
  18.     if(memo[i][cap] != -1) return memo[i][cap];
  19.  
  20.     return memo[i][cap] = max(dp(i+1,cap-w[i])+v[i], dp(i+1,cap));
  21. }
  22.  
  23. int main(){
  24.     scanf("%d %d", &N, &W);
  25.  
  26.     memset(memo, -1, sizeof memo);
  27.  
  28.     for(int i = 0; i < N; i++){
  29.         scanf("%d %d", &w[i], &v[i]);
  30.     }
  31.  
  32.     printf("%lld", dp(0,W));
  33.  
  34. }
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement