Cod sursa(job #152887)

Utilizator andrei-alphaAndrei-Bogdan Antonescu andrei-alpha Data 9 martie 2008 21:22:31
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
# define N 1128
#define M 50000
int rez[N],v[N];
char val[M];
int main()
{
	int r=2,n,i,j;
	int inj,gata,aux;
	freopen("economie.in", "r",stdin);
	freopen("economie.out", "w",stdout);
	scanf("%d", &n);
	for(i=1;i<=n;++i)
			scanf("%d", &v[i]);
	inj=n;
	while(inj>1)
	{
		inj/=2;
		do{
			gata=1;
			for(i=1;i<=n-inj;i++)
				if(v[i]>v[i+inj])
				{
					aux=v[i];
					v[i]=v[i+inj];
					v[i+inj]=aux;
					gata=0;
				}
		}
		while(!gata);
	} 
	//for(i=1;i<=n;++i)
	//		printf("%d\n", v[i]);
	//printf("\n");
	
	rez[1]=v[1];
	for(i=v[1];i<M;i+=v[1])
		val[i]=1;
	for(i=2;i<=n;++i)
	{
		//printf("\n");
		if(!val[v[i]])
		{	for(j=v[i];j<=M;j+=v[i])
				val[j]=1;
			rez[r]=v[i];
			++r;
		}
		//for(j=1;j<=16;++j)
		//	if(val[j]) printf("%d ", j); 
	}
	printf("%d\n", r-1);
	for(i=1;i<r;++i)
		printf("%d\n", rez[i]);
	return 0;
}