#include <iostream>
using namespace std;
int knapsack(int num,int capacity,int weight[],int value[]){
int space,sub_cap,total_value[num+1][capacity+1];
for(int i=0;i<=num;i++)for(int j=0;j<=capacity;j++)total_value[i][j]=0;
for(sub_cap=1;sub_cap<=capacity;sub_cap++){
for(space=1;space<=num;space++){
if(sub_cap>=weight[space-1]){
total_value[space][sub_cap]=max(total_value[space-1][sub_cap],total_value[space-1][sub_cap-weight[space-1]]+value[space-1]);
}else{
total_value[space][sub_cap]=total_value[space-1][sub_cap];
}
}
}
return total_value[num][capacity];
}
int main(){
int num=4,capacity=5,weight[]={2,1,3,2},value[]={12,10,20,15};
cout<<knapsack(num,capacity,weight,value);
return 0;
}