Pagini recente » Cod sursa (job #2858188) | Cod sursa (job #1362769) | Cod sursa (job #1444526) | Cod sursa (job #3167208) | Cod sursa (job #1678780)
var n,g,i,j,k,max:longint;
a,optim,b:array[0..75000] of longint;
m:array[1..75000,1..1000] of longint;
begin
assign(input,'ghiozdan.in');
assign(output,'ghiozdan.out');
reset(input);
rewrite(output);
read(n,g);
for i:=1 to n do read(a[i]);
max:=0;
optim[0]:=0;
for i:=1 to n do
for j:=g downto a[i] do begin
if (optim[j-a[i]]+a[i]=optim[j]) and (b[j-a[i]]+1<b[j]) then begin
b[j]:=b[j-a[i]];
for k:=1 to b[j] do
m[j,k]:=m[j-a[i],k];
inc(b[j]);
m[j,b[j]]:=a[i];
end;
if (optim[j-a[i]]+a[i]>optim[j]) then begin
optim[j]:=optim[j-a[i]]+a[i];
b[j]:=b[j-a[i]];
for k:=1 to b[j] do
m[j,k]:=m[j-a[i],k];
inc(b[j]);
m[j,b[j]]:=a[i];
end;
// if optim[max]<optim[j] then max:=j;
end;
// for i:=1 to g do begin
// for j:=1 to b[i] do write(m[i,j],' ');
// writeln;
// end;
// for i:=1 to g do write(optim[i],' ');
writeln(optim[g],' ',b[g]);
for i:=1 to b[g] do writeln(m[g,i])
end.