Cod sursa(job #281545)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 15 martie 2009 12:11:44
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#include <algorithm>
#define N 1005
using namespace std;
int n,v[1005],sol[1005],r,marc[50005],vmax;
int verificare()
{
	int i;
	for (i=1; i<=n; i++)
		if (marc[v[i]]==0)
			return 0;
	return 1;
}
void operatie()
{
	int i,j;
	for (i=sol[r]; i<=vmax; i+=sol[r])
		marc[i]++;
	for (i=1; i<=vmax; i++)
		for (j=i+1; i+j<=vmax; j++)
			if (marc[i] && marc[j])
				marc[i+j]++;
}
int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	int i;
	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 (verificare())
		{
			printf("%d\n",r);
			for (i=1; i<=r; i++)
				printf("%d\n",sol[i]);
			break;
		}
		else
		{
			sol[++r]=v[i];
			operatie();
		}
return 0;
}