Cod sursa(job #110573)

Utilizator pandaemonAndrei Popescu pandaemon Data 26 noiembrie 2007 23:14:12
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>

int n,sol[5000],cnt=0,sol2[1000]; long v[1001],i,j;

long divizare(int a,int x,long &m)
{long aux;   m=v[a];
 while(a<x)
 {while(v[a]<m) a++;
  while(v[x]>m) x--;
  if(a<x) {aux=v[a]; v[a]=v[x]; v[x]=aux;} }
  m=a;
}

long Q_SORT(int a,int x)
{long m;
if(a<x) {divizare(a,x,m);
	  Q_SORT(a,m-1);
	  Q_SORT(m+1,x);}
}

update()
{long var=v[i];
 for(j=1;j<=v[n];j++) if(sol[j]==1) sol[j+var]=1;
		       else if(j%var==0) sol[j]=1;
}

algoritm()
{for(i=1;i<=n;i++)
 if(sol[v[i]]==0) {cnt++; sol2[cnt]=v[i];
		   update();}
}


main()
{freopen("economie.in","r",stdin);
 freopen("economie.out","w",stdout);

 scanf("%d",&n);
 for(i=1;i<=n;i++) scanf("%ld",&v[i]);
 Q_SORT(1,n);

 algoritm();

 printf("%d\n",cnt);
 for(i=1;i<=cnt;i++) printf("%ld ",sol2[i]);

 printf("\n"); }