Cod sursa(job #21298)

Utilizator valkyriaValkyria Dark valkyria Data 23 februarie 2007 11:34:38
Problema Ghiozdan Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.89 kb
Program ghiozdan;
var f,g:text;
	x,s:array[1..20000]of longint;
	y:array[1..75000]of integer;
	m:array[1..75000] of set of byte;
	n,nmin,i:integer;
	gr,gmax,j,k:longint;

Function sumcrt(a:longint):longint;
var i:integer;
begin
	sumcrt:=0;
	for i:=1 to n do
		if i in m[a] then
			sumcrt:=sumcrt+x[i];
end;

begin
	assign(f,'ghiozdan.in'); reset(f);
	assign(g,'ghiozdan.out'); rewrite(g);
	readln(f,n,gr);
	for i:=1 to n do readln(f,x[i]);
	for j:=1 to gr do
		for k:=1 to n do
			if (j-x[k]>=0) and not (k in m[j-x[k]]) then
				if (y[i]=0) or (s[j-x[k]]+x[k]>s[j]) or (y[j-x[k]]+1<=y[j]) then
					begin
					y[j]:=y[j-x[k]]+1;
					m[j]:=m[j-x[k]]+[k];
					s[j]:=sumcrt(j);
					end;
	gmax:=0;
	nmin:=0;
	for i:=1 to n do
		if i in m[gr] then
		begin
			nmin:=nmin+1;
			gmax:=gmax+x[i];
			x[nmin]:=x[i];
		end;
	writeln(g,gmax,' ',y[gr]);
	for i:=1 to y[gr] do
		writeln(g,x[i]);
	close(f);
	close(g);
end.