Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define X ios_base::sync_with_stdio(false); cin.tie(NULL);
- typedef long long ll;
- typedef vector<int> VI;
- typedef vector<ll> VL;
- typedef vector<bool> VB;
- typedef vector<string> VS;
- typedef pair<ll, ll> pl;
- typedef unordered_map<ll, ll> UMP;
- #define FOR(i,b) for(i=0;i<b;i++)
- #define pb push_back
- int main(){
- ll n,i,x,j;
- cin>>n>>x;
- // x++;
- VL cost(n);
- VL pages(n);
- vector<pl> zip_(n);
- FOR(i,n){cin>>cost[i];}
- FOR(i,n){
- cin>>pages[i];
- pl tmpp = make_pair(cost[i], pages[i]);
- zip_[i] = tmpp;
- }
- sort(zip_.begin(), zip_.end());
- // debug(zip_);
- vector<VL> dp(x+1, vector<ll>(n,0));
- FOR(i,n){
- dp[0][i]=0;
- }
- for(i=0;i<=x;i++){
- // debug(i);
- for(j=0;j<n;j++){
- if(zip_[j].first>i){break;}
- if(j==0){dp[i][j] = max(dp[i][j], zip_[j].second);}
- else{
- dp[i][j] = max(dp[i][j-1], dp[i][j]);
- dp[i][j] = max(dp[i][j], zip_[j].second+dp[i-zip_[j].first][j-1]);
- }
- // debug(i,j,dp[i][j]);
- }
- }
- // debug(dp);
- cout<<dp[x][n-1]<<endl;
- }
Add Comment
Please, Sign In to add comment