fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n;
  4. vector<int>a,b;
  5. int page;
  6. int dp[1005][1005];
  7. int fun(int i,int j){
  8. if(i>=n)return 0;
  9. if(j>=page)return 0;
  10. if(dp[i][j]!=-1)return dp[i][j];
  11. int ans=0;
  12. if(j+2*b[i]<=page)ans=max(ans,a[i]+fun(i+1,j+2*b[i]));
  13. ans=max(ans,fun(i+1,j));
  14. return dp[i][j]=ans;
  15. }
  16.  
  17. int main() {
  18. // your code goes here
  19. cin>>n;
  20. vector<pair<int,int>>p(n);
  21. memset(dp,-1,sizeof(dp));
  22. a.resize(n);b.resize(n);
  23. for(int i=0;i<n;i++)cin>>a[i];
  24. for(int i=0;i<n;i++){
  25. int x;
  26. cin>>x;
  27. p[i]=make_pair(a[i],x);
  28. }
  29. sort(a.begin(),a.end());sort(p.begin(),p.end());
  30. for(int i=0;i<n;i++)b[i]=p[i].second;
  31. cin>>page;
  32. int ans=fun(0,0);
  33. cout<<ans;
  34. return 0;
  35. }
Success #stdin #stdout 0s 7456KB
stdin
4
2 4 4 5
2 2 3 4
15
stdout
10