Pagini recente » Cod sursa (job #434347) | Cod sursa (job #2676078) | Cod sursa (job #2910781) | Cod sursa (job #1195467) | Cod sursa (job #184318)
Cod sursa(job #184318)
type list=array[1..1001] of longint;
var v,vv:list;
val:array[1..50000] of 0..1;
n,nr,i,j:longint;
procedure QuickSort(var A: List; Lo, Hi: Integer);
procedure Sort(l, r: longint);
var
i, j, x, y: longint;
begin
i := l; j := r; x := a[(l+r) DIV 2];
repeat
while a[i] < x do i := i + 1;
while x < a[j] do j := j - 1;
if i <= j then
begin
y := a[i]; a[i] := a[j]; a[j] := y;
i := i + 1; j := j - 1;
end;
until i > j;
if l < j then Sort(l, j);
if i < r then Sort(i, r);
end;
begin {QuickSort};
Sort(Lo,Hi);
end;
procedure citire;
var i:integer;
f:text;
begin
assign(f,'economie.in');reset(f);
readln(f,n);
for i:=1 to n do readln(f,v[i]);
close(f);
end;
procedure afisare;
var i:integer;
f:text;
begin
assign(f,'economie.out');rewrite(f);
writeln(f,nr);
for i:=1 to nr do writeln(f,vv[i]);
close(f);
end;
procedure initializare;
begin
nr:=0;
for i:=1 to 50000 do val[i]:=0;
end;
begin
citire;
initializare;
quicksort(v,1,n);
for i:=1 to n do
begin
if val[v[i]]=0 then
begin
inc(nr);
vv[nr]:=v[i];
val[v[i]]:=1;
for j:=1 to (v[n]-v[i]) do
if val[j]=1 then val[j+v[i]]:=1;
end;
end;
afisare;
end.