Cod sursa(job #126989)

Utilizator za_wolfpalianos cristian za_wolf Data 23 ianuarie 2008 00:49:14
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
#define NMAX 1001
#define MMAX 55001
long x[NMAX],y[MMAX],z[MMAX],i,j,m,sol,rez[NMAX],q,n;
int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	scanf("%ld",&n);
	for (i=1;i<=n;i++)
	{
		scanf("%ld",&x[i]);
		z[x[i]]=1;
		if (x[i]>q) q=x[i];
	}
	m=n;
	sol=0;
	y[0]=1;
	for (i=1;i<=n&&m>0;i++)
	if (z[x[i]])
	{
		for (j=1;x[i]*j<=q;j++)
		{
		if (z[x[i]*j])			m--;
			z[x[i]*j]=0;
			y[x[i]*j]=1;
		}
		for (j=0;j<=q;j++)
		if (y[j])
		{
			z[x[i]+j]=0;
		   if (z[x[i]+j])	m--;
			y[x[i]+j]=1;
		}
		rez[++rez[0]]=x[i];
	}

	printf("%ld\n",rez[0]);
	for (i=1;i<=rez[0];i++)
		printf("%ld\n",rez[i]);
	return 0;
}