Cod sursa(job #299054)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 6 aprilie 2009 16:01:13
Problema Economie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
char ok[50006];
int main()
{long int moneda[1006],max,nr=0,j,q,i;
int n,v[1006];


freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);

scanf("%d",&n);max=0;memset(ok,0,sizeof(ok));
for (i=1;i<=n;i++) { scanf("%d",&j);if (!ok[j]) {nr++;v[nr]=j;if (j>max) max=j; ok[j]=1;}}
n=nr;nr=0;
sort(v+1,v+n+1);
for (i=1;i<=n;i++) 
	if (ok[v[i]]==1)
	{nr++;moneda[nr]=v[i]; for (j=0;j<=n;j++) 
		if ((ok[v[j]]==-1)	|| (ok[v[j]]==1)) 
			for (q=1;q<=(max-v[j])/v[i];q++) ok[v[j]+q*v[i]]=-1;
	}	

printf("%ld\n",nr);
for (i=1;i<=nr;i++) printf("%ld\n",moneda[i]);
return 0;}