Cod sursa(job #300590)

Utilizator mottyMatei-Dan Epure motty Data 7 aprilie 2009 15:34:29
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#define N 1001
#define M 50001
using namespace std;
int n,v[N],d[M],vm,vl,a[M],b[M];

void cit()
{
	int x;
	scanf("%d",&n);
	for( int i=0 ; i<n ; ++i )
	{
		scanf("%d",&x);
		if( x > vm )
			vm=x;
		++a[x];
	}
	int poz=0;
	for( int i=0 ; i<=vm ; ++i )
		while(a[i]--)
			v[poz++]=i;
}

void calc()
{
	b[vl++]=0;
	for( int i=v[b[0]] ; i<=vm ; i+=v[b[0]] )
		d[i]++;
	for( int i=1 ; i<n ; ++i )
	{
		if(d[v[i]]==0)
		{
			v[vl++]=i;
			d[v[i]]++;
			for( int j=1 ; j<=vm-i ; j++ )
				if(d[v[i]])
					for( int k=j ; k<=vm ; k+=j )
						d[v[i]]++;
		}
	}
	printf("%d\n",vl);
	for( int i=0 ; i<vl ; ++i )
		printf("%d\n",v[b[i]]);
}

int main()
{
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	cit();
	calc();
	return 0;
}