Advertisement
jeff69

Nabsack

Jan 20th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.54 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MX=3e3+5;
  4. typedef long long ll;
  5. int dp[MX][MX],n,a[MX],b[MX],V;
  6. int solve(int x,int Vv)
  7. {
  8.     if(x==n)return 0;
  9.     int& ans=dp[x][Vv];
  10.     if(ans!=-1)return ans;
  11.     ans=0;
  12.     if(Vv>=a[x])
  13.         ans=b[x]+solve(x+1,Vv-a[x]);
  14.     ans=max(ans,solve(x+1,Vv));
  15.     return ans;
  16. }
  17. int main()
  18. {
  19.     memset(dp,-1,sizeof dp);
  20.     cin>>n>>V;
  21.     for(int i=0;i<n;i++)
  22.     {
  23.         cin>>a[i];
  24.     }
  25.     for(int i=0;i<n;i++)
  26.         cin>>b[i];
  27.     cout<<solve(0,V);
  28.     return 0;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement