Cod sursa(job #404280)

Utilizator Anonymous1010Chilivercu Cristian Anonymous1010 Data 25 februarie 2010 23:38:27
Problema Economie Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#include<stdlib.h>

int i,a[1002],ok[50002],n,k,j,aux,l,v[1002];

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

int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	
	scanf("%d",&n);
	
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	
	qsort(a+1,n,sizeof(int),cmp);
	
	for(i=1;i<=n;i++)
		if(!ok[a[i]])
		{
			k++;
			v[k]=a[i];
			
			for(j=2;j<=a[n];j++)
				if(ok[j])
				{
					aux=(a[n]-j)/a[i];
					for(l=1;l<=aux;l++)
						ok[l*a[i]+j]=1;
				}
			
			aux=a[n]/a[i];
			
			for(j=1;j<=aux;j++)
				ok[j*a[i]]=1;
		}
		
	printf("%d\n",k);
	
	for(i=1;i<=k;i++)
		printf("%d\n",v[i]);

	return 0;		
}