Cod sursa(job #281480)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 15 martie 2009 01:10:30
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>
#include <algorithm>
#define N 1005
using namespace std;
int n,v[1005],sol[1005],r,marc[50005];
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<=50000; i+=sol[r])
		marc[i]++;
	for (i=1; i<=50000; i++)
		for (j=i+1; j<=50000 && i+j<=50000; 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);
	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;
}