CSES - Shared codeLink to this code:
https://cses.fi/paste/53a3b5135a0320522945fd/
#include <bits/stdc++.h>
using namespace std;
int z = 1e9 + 7;
void solve(){
int n,x;cin>>n>>x;
int price[n],page[n];
for(int i=0;i<n;i++) cin>>price[i];
for(int i=0;i<n;i++) cin>>page[i];
vector<vector<int>> dp(n+1,vector<int>(x+1,0));
vector<vector<int>> dp_page(n+1,vector<int>(x+1,0));
for(int i=0;i<=n;i++) dp[i][0] = 1;
int mx = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=x;j++){
if(j-price[i-1]>=0){
if(dp[i-1][j-price[i-1]]){
dp_page[i][j] = max(dp_page[i][j],dp_page[i-1][j-price[i-1]]) + page[i-1];
dp[i][j] = 1;
}
}
if(dp[i-1][j]){
dp_page[i][j] = max(dp_page[i][j],dp_page[i-1][j]);
dp[i][j] = 1;
}
mx = max(mx,dp_page[i][j]);
}
}
cout << mx;
}
int main(){
ios_base::sync_with_stdio(0) ;
cin.tie(0) ; cout.tie(0) ;
cout.precision(20);
int T=1;//cin>>T;
while(T--){
solve();
if(T)cout << endl;
}
return 0;
}