Cod sursa(job #214722)

Utilizator FllorynMitu Florin Danut Flloryn Data 15 octombrie 2008 19:12:55
Problema Economie Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.93 kb
program pascal;
var f,g:text;
    n:0..1000;
    i,k,j,p,q,aux:0..100000;
    v,t:array[0..1000] of 0..50000;  ok:boolean;
    x:array[0..100000] of 0..50000000;

   {procedure quicksort(s,d:integer);
   var a,b,ia,aux:integer;
   begin
      a:=s; b:=d;
      repeat
       while v[a]<v[b] do b:=b-1;
       aux:=v[a];
       v[a]:=v[b];
       v[b]:=aux;
       ia:=1;
       a:=a+1;
       if a<b then
          begin
            while v[a]<v[b] do a:=a+1;
            if a<>b then
               begin
               aux:=v[a];
               v[a]:=v[b];
               v[b]:=aux;
               ia:=0;
               b:=b-1;
               end;
            end;
      until a>b;
      if s<a-ia then quicksort(s,a-ia);
      if a-ia+1<d then quicksort(a-ia+1,d);
   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]);
{quicksort(1,n);}

repeat
ok:=true;
 for i:=1 to n-1 do
  if v[i]>v[i+1] then
     begin
       aux:=v[i];
       v[i]:=v[i+1];
       v[i+1]:=aux;
       ok:=false;
     end;
until ok;

k:=1;
t[1]:=v[1];
x[1]:=t[1];
q:=1;
         for i:=2 to n do
         begin
             ok:=true;
             for j:=1 to q do
              if v[i] mod x[j]=0 then
                             begin
                               ok:=false;
                               break;
                             end;
             if ok then
              begin
                k:=k+1;
                t[k]:=v[i];
                aux:=q;
                for j:=1 to q do
                    begin
                      inc(aux);
                      x[aux]:=x[j]+v[i];
                    end;
               inc(aux);
               x[aux]:=v[i];
               q:=aux;
              end;
           end;
          writeln(g,k);
          for p:=1 to k do writeln(g,t[p]);

close(f);
close(g);
end.