Pagini recente » Cod sursa (job #1579073) | Cod sursa (job #1908991) | Cod sursa (job #2533871) | Cod sursa (job #2150851) | Cod sursa (job #18272)
Cod sursa(job #18272)
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.