Pagini recente » Cod sursa (job #56815) | Cod sursa (job #1503581) | Cod sursa (job #545608) | Cod sursa (job #3231816) | Cod sursa (job #169177)
Cod sursa(job #169177)
program ghiozdan;
var f,gg:text;
a,b,aux,i,j,max,ia,n,g:longint;
v,val,nr,p:array[1..20000] of longint;
procedure quick(s,d:integer);
begin
a:=s;
b:=d;
repeat
while v[a]<v[b] do b:=b-1;
aux:=v[a]; v[a]:=v[b]; v[b]:=aux;
a:=a+1; ia:=1;
if b>a then
begin
while v[a]<v[b] do a:=a+1;
aux:=v[a]; v[a]:=v[b]; v[b]:=aux;
b:=b-1; ia:=0;
end;
until b<=a;
if s<a-ia then quick(s,a-ia);
if d>a-ia+1 then quick(a-ia+1,d);
end;
begin
assign(f,'ghiozdan.in'); reset(f); readln(f,n,g); for i:=1 to n do readln(f,v[i]); close(f);
quick(1,n);
p[n]:=0; val[n]:=v[n]; nr[n]:=1;
max:=val[n];
for i:=n-1 downto 1 do
begin
a:=0;
for j:=i+1 to n do
if (val[j]+v[i]<=g)and(val[j]+v[i]>a) then begin a:=val[j]+v[i]; b:=j;end
else if (val[j]+v[i]<=g)and(val[j]+v[i]=a)and(nr[j]<nr[b]) then b:=j;
if a<>0 then begin val[i]:=a; nr[i]:=nr[b]+1; p[i]:=b; end
else begin val[i]:=v[i]; nr[i]:=1; p[i]:=0;a:=v[i];end;
if a>max then begin max:=a; aux:=i;end;
end;
assign(gg,'ghiozdan.out'); rewrite(gg); writeln(gg,max,' ',nr[aux]);
writeln(gg,v[aux]) ;
i:=p[aux];
while i<>0 do
begin
writeln(gg,v[i]);
i:=p[i];
end;
close(gg);
end.