Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- int helper(int idx, int s, int n, vector<pair<int,int>> &diff, vector<vector<int>> &dp){
- if(idx >= n)return 0;
- if(dp[idx][s] != -1)return dp[idx][s];
- int ans1 = (diff[idx].first <= s ? diff[idx].second + helper(idx + 1, s - diff[idx].first, n, diff, dp) : 0);
- int ans2 = helper(idx + 1, s, n, diff, dp);
- return dp[idx][s] = max(ans1,ans2);
- }
- int main(){
- //Write here code...
- int s; cin >> s;
- int n = 5;
- vector<int> curr(n), future(n);
- for(auto &x : curr)cin >> x;
- for(auto &x : future)cin >> x;
- vector<pair<int,int>> diff(n);
- vector<vector<int>> dp(n, vector<int>(s + 10,-1));
- for(int i = 0; i < n; i++)diff[i] = {curr[i], future[i] - curr[i]};
- sort(diff.begin(),diff.end(),[](pair<int,int> &a, pair<int,int> &b){
- if(a.second == b.second)return a.first < b.first;
- return a.second > b.second;
- });
- cout << helper(0, s, n, diff, dp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement