Cod sursa(job #157864)

Utilizator Marinescu_DanyelMarinescu George Marinescu_Danyel Data 13 martie 2008 12:26:29
Problema Economie Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.47 kb
Program economie_cu_monezi;

     type vector=array[1..1000]of word;


     var v,m:vector;
         i,j,n,k,min:word;
         f,g:text;
         ok:boolean;


procedure sortare(var v:vector);
   var i,j,aux,k:integer;
 begin
  for i:=1 to n-1 do
    begin
       k:=i;
     for j:=i+1 to n do
      if v[j]<v[k] then
       k:=j;
        if k>i then
         begin
          aux:=v[i];
          v[i]:=v[k];
          v[k]:=aux;
         end;
        end;
       end;


 procedure back_rec(numar:integer);
    var ii:word;
     begin
       ii:=1;
        while(ii<=min) and not ok do
          begin
           if numar-m[ii]>0 then
             back_rec(numar-m[ii])
           else
            if numar-m[ii]=0 then
              ok:=true;
              ii:=ii+1;
              end;
              end;




procedure incercare;
 var ok:boolean;
 begin
   for i:=2 to n do
   ok:=false;
   back_rec(v[i]);
    if not ok  then
     begin
      min:=min+1;
      m[min]:=v[i];
     end;
    end;


begin

 assign(f,'economie.in');
 reset(f);
 assign(g,'economie.out');
 rewrite(g);
 read(f,n);
 For i:=1 to n do
  read(f,v[i]);
  sortare(v);
 If v[1]=1 then
    begin
     writeln(g,1);
     write(g,1);
     end
    else
     begin
    min:=1;
    i:=2;
    m[1]:=v[1];
    incercare;
    writeln(g,min);
    for j:=1 to min do
     writeln(g,m[j]);
     end;
     close(f);
     close(g);
     end.