Cod sursa(job #110131)

Utilizator me_andyAvramescu Andrei me_andy Data 25 noiembrie 2007 18:22:17
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream.h>
#include<stdlib.h>
 ifstream f("economie.in");
 ofstream g("economie.out");
  long v[1010],i,j,salv[1010],n,ok,x,s2,k;

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main()
{
 f>>n;
 for(i=1;i<=n;i++)
  f>>v[i];
  qsort (v,n+1, sizeof(long), compare);
 i=1;
 x=1;
 salv[1]=v[1];
 while(x<n)
 {
  ok=0;
  for(j=1;j<=i;j++)
   if(v[x]%salv[j]==0)
   {
    x++;
    ok=1;
    break;
   }
  if(ok==0)
  {
   k=i;
   s2=v[x];
   while(k>=1 && s2>0)
   {
    while(s2>=salv[k])
    {
     s2-=salv[k];
     for(j=k;j>=1;j--)
       if(s2%salv[j]==0)
	s2=0;
	}
    k--;

   }
   if(s2==0)
   {
    ok=1;
    x++;
   }
  }
  if(ok==0)
  {
  i++;
  salv[i]=v[x];
  }
 }
 g<<i<<"\n";
 for(j=1;j<=i;j++)
  g<<salv[j]<<"\n";

 f.close();
 g.close();
 return 0;
}