Cod sursa(job #18272)

Utilizator valkyriaValkyria Dark valkyria Data 18 februarie 2007 11:10:25
Problema Ghiozdan Scor 10
Compilator fpc Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.97 kb
Program ghiozdan;
var f,g:text;
	n,nmin,i:integer;
	gr,gmax,sc:longint;
	v,y,st:array[1..20000] of longint;


Function valid(p:integer):boolean;
var i:integer;
begin
	valid:=true;
	if sc>gr then valid:=false
	else
	for i:=1 to p-1 do
		if st[i]=st[p] then
		valid:=false;
end;

procedure compara(P:integer);
var i:integer;
begin
	if sc>gmax then begin
		gmax:=sc;
		nmin:=p;
		for i:=1 to p do
		y[i]:=v[st[i]];
		end
	else
	if (sc=gmax) and (p<nmin) then begin
		nmin:=p;
		for i:=1 to p do
		y[i]:=v[st[i]];
		end
end;

Procedure bkt(p:integer);
var pval:longint;
begin
	for pval:=1 to n do
	begin
	st[p]:=pval;
	sc:=sc+v[pval];
	if valid(p) then
	begin
		compara(p);
		if sc<gr then
		bkt(p+1);
	end;
	sc:=sc-v[pval];
	end;
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,v[i]);
	 sc:=0;
	nmin:=0; gmax:=0;
	bkt(1);
	writeln(g, gmax,' ',nmin);
	for i:=1 to nmin do
		writeln(g, y[i]);
	close(f); close(g);
end.