Pagini recente » Cod sursa (job #2430393) | Cod sursa (job #1809182) | Cod sursa (job #2244403) | Cod sursa (job #2448785) | Cod sursa (job #214706)
Cod sursa(job #214706)
program pascal;
var f,g:text;
n,i,k,s,j,p:longint;
v,t:array[1..1000] of longint; ok:boolean;
x:array[1..100000000] of longint;
procedure quicksort(s,d:integer);
var a,b,ia,aux: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;
ia:=1;
a:=a+1;
if a<b then
begin
while v[a]<v[b] do a:=a+1;
if a<>b then
begin
aux:=v[a];
v[a]:=v[b];
v[b]:=aux;
ia:=0;
b:=b-1;
end;
end;
until a>b;
if s<a-ia then quicksort(s,a-ia);
if a-ia+1<d then quicksort(a-ia+1,d);
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]);
quicksort(1,n);
k:=1;
t[1]:=v[1];
s:=t[1];
x[t[k]]:=1;
if t[1]=1 then
begin
writeln(g,1);
write(g,1);
end
else
begin
for i:=2 to n do
begin
ok:=true;
for j:=1 to s do
if x[j]=1 then
if v[i] mod j=0 then
begin
ok:=false;
break;
end;
if ok then
begin
k:=k+1;
t[k]:=v[i];
for j:=1 to s do
if x[j]=1 then
begin
x[j+v[i]]:=1;
if j+v[i]>s then s:=j+v[i];
end;
x[v[i]]:=1;
end;
end;
writeln(g,k);
for p:=1 to k do writeln(g,t[p]);
end;
close(f);
close(g);
end.