Cod sursa(job #126988)

Utilizator za_wolfpalianos cristian za_wolf Data 23 ianuarie 2008 00:47:12
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 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])
		{
			z[x[i]+j]=0;
			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;
}