/CATU - Cái túi

<Problem>

http://ntucoder.net/Problem/Details/1147
              Uses Crt,Math;
        Var n,m,i,j:longint;
            w,v:array[-10..1000] of longint;
            a:array[-10..1000,-10..1000] of longint;
        Begin
            readln(n,m);
            for i:=1 to n do readln(w[i],v[i]);
            for i:=1 to n do
             for j:=1 to m do
              if j>=w[i] then
               a[i,j]:=max(a[i-1,j],a[i-1,j-w[i]]+v[i])
               else
               a[i,j]:=a[i-1,j];
            writeln(a[n,m]);
            i:=n;j:=m;
            while (i>=1) and (j>=1) and (a[i,j]<>0) do
             begin
                 while a[i,j]=a[i-1,j] do dec(i);
                 write(i,' ');
                 j:=j-w[i]; i:=i-1;
             end;
            readln;
        End.