Pagini recente » Cod sursa (job #1444740) | Cod sursa (job #2406743) | Cod sursa (job #44981) | Cod sursa (job #1774588) | Cod sursa (job #184067)
Cod sursa(job #184067)
program economii;
var v, rez : array[1..1001] of longint;
uz : array[1..50000] of boolean;
i, j, N, nr : longint;
f, g : text;
procedure sort(p,q:longint);
var st, dr, m, aux:longint;
begin
st := p;
dr := q;
m := v[(st + dr) div 2];
while (st < dr) do
begin
while (v[st] < m) do inc(st);
while (v[dr] > m) do dec(dr);
if (st<=dr) then
begin
aux := v[st];
v[st] := v[dr];
v[dr] := aux;
inc(st);
dec(dr);
end;
end;
if (st < q) then sort(st,q);
if (dr > p) then sort(p,dr);
end;
begin
assign(f,'economie.in'); reset(f);
readln(f,N);
nr:=0;
for i:=1 to 50000 do uz[i] := false;
for i := 1 to N do read(f,v[i]);
sort(1,N);
for i:=1 to N do
begin
if (not(uz[v[i]])) then
begin
inc(nr);
rez[nr] := v[i];
uz[v[i]] := true;
for j :=1 to (v[N] - v[i]) do
if (uz[j]) then
uz[j+v[i]] := true;
end;
end;
close(f);
assign(g,'economie.out'); rewrite(g);
writeln(g,nr);
for i:=1 to nr do
writeln(g,rez[i]);
close(g);
end.