Cod sursa(job #281568)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 15 martie 2009 13:00:42
Problema Economie Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#include <algorithm>
#define N 1005
using namespace std;
int n,v[1005],sol[1005],r,marc[50005],vmax;
int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	int i,j,k;
	scanf("%d",&n);
	for (i=1; i<=n; i++)
		scanf("%d",&v[i]);
	sort(v+1,v+n+1);
	vmax=v[n];
	for (i=1; i<=n; i++)
		if (marc[v[i]]==0)
		{
			sol[++r]=v[i];
			for (j=sol[r]; j<=vmax; j+=sol[r])
				marc[j]++;
			for (j=1; j<=vmax; j++)
				for (k=sol[r]; k<=vmax; k+=sol[r])
					if (marc[j] && j+k<=vmax && j%sol[r]!=0)
						marc[j+k]++;
		}
	printf("%d\n",r);
	for (i=1; i<=r; i++)
		printf("%d\n",sol[i]);
return 0;
}