Pagini recente » Istoria paginii utilizator/vasileambreiaj | Cod sursa (job #1592990) | Cod sursa (job #143800) | Cod sursa (job #523076) | Cod sursa (job #184340)
Cod sursa(job #184340)
type list=array[0..1001] of longint;
var a,rez:list;
uz:array[0..50001] of boolean;
i,j,N,nr:longint;
f,g:text;
procedure QuickSort(var a:List; Lo, Hi: Integer);
procedure Sort(l, r: Integer);
var
i, j, x, y: integer;
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;
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,a[i]);
close(f);
QuickSort(a,1,N);
for i:=1 to N do
begin
if (not(uz[a[i]])) then
begin
inc(nr);
rez[nr]:=a[i];
uz[a[i]]:= true;
for j :=1 to (a[N] - a[i]) do
if (uz[j]) then
uz[j+a[i]] := true;
end;
end;
assign(g,'economie.out'); rewrite(g);
writeln(g,nr);
for i:=1 to nr do
writeln(g,rez[i]);
close(g);
end.