Advertisement
FreakSkipper

Canibais

Dec 11th, 2020
821
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define vi vector<int>
  6. #define vll vector<ll>
  7. #define ll long long
  8. #define pb push_back
  9. #define eb emplace_back
  10. #define mp make_pair
  11. #define ii pair<int, int>
  12. #define ff first
  13. #define ss second
  14.  
  15. #define PRIMO 1000000007
  16.  
  17. int n, m;
  18. vi peso(10001), valor(10001);
  19. int tb[10001][10001];
  20.  
  21. int dp(int i, int p) {
  22.     if (i == n || p == 0) return 0;
  23.     if (tb[i][p] != -1) return tb[i][p];
  24.  
  25.     int pegar = 0;
  26.     if (p >= peso[i]) {
  27.         pegar = valor[i] + dp(i + 1, p - peso[i]);
  28.     }
  29.     int npegar = dp(i + 1, p);
  30.     tb[i][p] = max(pegar, npegar);
  31.  
  32.     return tb[i][p];
  33. }
  34.  
  35. int main() {
  36.     ios_base::sync_with_stdio(false);
  37.     cin.tie(NULL);
  38.     memset(tb, -1, sizeof(tb));
  39.  
  40.     cin >> n >> m;
  41.  
  42.     for (int i = 0; i < n; i++) {
  43.         cin >> valor[i];
  44.     }
  45.     for (int i = 0; i < n; i++) {
  46.         cin >> peso[i];
  47.     }
  48.  
  49.     int ans = 0;
  50.     ans = dp(0, m);
  51.  
  52.     cout << ans << endl;
  53.  
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement