Cod sursa(job #110486)

Utilizator FlorianFlorian Marcu Florian Data 26 noiembrie 2007 20:35:17
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("economie.in","r");
FILE*g=fopen("economie.out","w");
int u[50003],sol[1003],a[1003];
int cmp(const void*a,const void*b)
	{
	return *(int*)a-*(int*)b;
	}
int main()
	{
	int i,j,n,p=0,ii,jj;
	fscanf(f,"%d",&n);
	for(i=1;i<=n;++i) fscanf(f,"%d",&a[i]);
	qsort(a,n+1,sizeof(a[1]),cmp);
	u[0]=1;
	for(i=1;i<=n;++i)
		{
		if(!u[a[i]])
			{
			sol[++p]=a[i];
			j=1;
			while(a[i]*j<=a[n])
				{
				u[a[i]*j]=1;
				++j;
				}
			for(j=1;j<=a[n];++j)
				if(u[j]==1&&j+sol[p]<=a[n]) u[j+sol[p]]=1;
			}
		}


	fprintf(g,"%d\n",p);
	for(i=1;i<=p;++i)
		fprintf(g,"%d\n",sol[i]);
	return 0;
	}