Pagini recente » Cod sursa (job #1887557) | Cod sursa (job #1646301) | Cod sursa (job #1541789) | Cod sursa (job #1885728) | Cod sursa (job #503380)
Cod sursa(job #503380)
program economie;
var f, g:text;
n, x, rez:longint;
v, vrez:array[0..1000] of longint;
a:array[0..50000] of boolean;
procedure citire;
var i:longint;
begin
readln(f,n);
for i:=1 to n do
read(f,v[i]);
end;
function pozitionare(i,j:longint):longint;
begin
x:=v[i];
while i<j do
begin
while (j>i) and (x<=v[j]) do
j:=j-1;
v[i]:=v[j];
while (i<j) and (v[i]<=x) do
i:=i+1;
v[j]:=v[i];
end;
v[i]:=x;
pozitionare:=i;
end;
procedure Qsort(st,dr:longint);
var m:longint;
begin
m:=pozitionare(st,dr);
if st<m-1 then
Qsort(st,m-1);
if m+1<dr then
Qsort(m+1,dr);
end;
procedure rezolvare;
var i, j:longint;
begin
a[0]:=true;
for i:=1 to n do
if not a[v[i]] then
begin
rez:=rez+1;
vrez[rez]:=v[i];
for j:=v[i] to v[n] do
if a[j-v[i]] then
a[j]:=true;
end;
writeln(g,rez);
for i:=1 to rez do
writeln(g,vrez[i]);
end;
begin
assign(f,'economie.in'); reset(f);
assign(g,'economie.out'); rewrite(g);
citire;
Qsort(1,n);
rezolvare;
close(f);
close(g);
end.