Cod sursa(job #286762)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 24 martie 2009 09:50:48
Problema Economie Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.95 kb
const nmax=1000;
const mmax=50000;
var f,g:text;
v:array[1..nmax]of longint;
s:array[1..mmax] of shortint;
k,n,i,j:longint;
procedure divid(st,dr:longint);
var aux,p,i,j:longint;
begin
i:=st;
j:=dr;
p:=v[(st+dr)div 2];
while (i<=j) do
   begin
     while (v[i]<p) do i:=i+1;
     while (v[j]>p) do j:=j-1;
     if i<=j then begin
             aux:=v[i];
             v[i]:=v[j];
             v[j]:=aux;
             i:=i+1;
             j:=j-1;
             end;
   end;
   if st<j then divid(st,j);
   if dr>i then divid(i,dr);
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]);
close(f);
divid(1,n);
for i:=1 to n do
   begin
     if s[v[i]]=0 then begin s[v[i]]:=2; k:=k+1;end;
     for j:=v[i]+1 to 50000 do
          if s[j-v[i]]<>0 then s[j]:=1;
   end;
writeln(g,k);
for i:=1 to 50000 do
    if s[i]=2 then writeln(g,i);
close(g);
end.