#include<bits/stdc++.h>
using namespace std;
int dp[100][200];
dps(int w[],int p[],int c,int n){
for(int i=0;i<n ;i++){
for(int j=0;j<c;j++){
if(w[n]>c){
dp[i][j]= dp[i-1][j];
}
else{
dp[n][c]= max(p[i]+ dp[i-1][j-w[i]], dp[i-1][j]);
}
}
}
return dp[n][c];
}
int main(){
int n;
cin>>n;
int c;
cin>>c;
int w[n-1],p[n-1];
for(int i=0;i<n;i++){
cin>>w[i];
}
for(int i=0;i<n;i++){
cin>>p[i];
}
for(int i=0;i<n+1;i++)
{
for(int j=0;j<c+1;j++ ){
if(i==0 || j==0){
dp[i][j]= 0;
}
}
}
cout<< dps(w, p,c,n);
return 0;
}
1 Like