Pagini recente » Cod sursa (job #200580) | Cod sursa (job #176092) | Cod sursa (job #1738315) | Cod sursa (job #1874554) | Cod sursa (job #286714)
Cod sursa(job #286714)
const nmax=1000;
const mmax=50000;
var f,g:text;
v,ap:array[1..nmax]of longint;
s:array[1..mmax] of 0..1;
k,n,i,j,m:longint;
q:boolean;
procedure divid(st,dr:longint);
var aux,p,i,j:longint;
begin
i:=st;
j:=dr;
p:=v[(st+dr)div 2];
while (i<=j) do
begin
while (v[i]<p) do i:=i+1;
while (v[j]>p) do j:=j-1;
if i<=j then begin
aux:=v[i];
v[i]:=v[j];
v[j]:=aux;
i:=i+1;
j:=j-1;
end;
end;
if st<j then divid(st,j);
if dr>i then divid(i,dr);
end;
begin
assign(f,'economie.in');
reset(f);
assign(g,'economie.out');
rewrite(g);
readln(f,n);
for i:=1 to n do
readln(f,v[i]);
divid(1,n);
q:=true;
while q do
begin
q:=false;
for i:=1 to n do
if s[v[i]]=0 then
begin
q:=true;
break;
end;
if q then
begin
s[v[i]]:=1;
k:=k+1;
ap[k]:=v[i];
for j:=1 to v[n]-v[i] do
if s[j]=1 then s[j+v[i]]:=1;
end;
end;
writeln(g,k);
for i:=1 to k do
writeln(g,ap[i]);
close(g);
end.