package test01;
import java.util.Scanner;
public class NapSack{
public static void main(String[] args) {
Scanner in=new Scanner(System.in) ;
int N=in.nextInt();
int W=in.nextInt();
int v[] =new int[N+1];
for(int i=1;i<=N;i++) {
v[i]=in.nextInt();
}
int w[] =new int[N+1];
for(int i=1;i<=N;i++) {
w[i]=in.nextInt();
}
int Opt[][]= new int[N+1][W+1];
int cho[] =new int[N];
for(int i=1;i<=N;i++) {
for(int j=1;j<=W;j++) {
if(w[i]>j) Opt[i][j]=Opt[i-1][j];
else {
int arg0=v[i]+Opt[i-1][Math.max(0, j-w[i])];
int arg1=Opt[i-1][j];
Opt[i][j]=Math.max(arg0, arg1);
}
}
}
System.out.println("背包可装最大价值为:");
System.out.printf(Opt[N][W]+"\n");
for(int i=0;i<=N;i++) {
for(int j=0;j<=W;j++) {
System.out.printf(Opt[i][j]+" ");
}
System.out.println();
}
System.out.println("拿取的商品编号为:");
int ii=N,jj=W,sum=Opt[N][W];
while( ii>0&& jj>0) {
if(v[ii]+Opt[ii-1][Math.max(0, jj-w[ii])]==sum) {
System.out.printf(ii+" ");
sum-=v[ii]; jj=jj-w[ii];
}
ii--;
}
}
}
