Cod sursa(job #111747)

Utilizator hadesgamesTache Alexandru hadesgames Data 1 decembrie 2007 19:52:49
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>
int a[1001],b[1001],nr=0,i,j,d,n,c[50001];
 int compare( const void* a, const void* b ) {
   int* arg1 = (int*) a;
   int* arg2 = (int*) b;
   if( *arg1 < *arg2 ) return -1;
   else if( *arg1 == *arg2 ) return 0;
   else return 1;
 }              
int main()
{
	FILE *in,*out;

	in=fopen("economie.in","r");
	out=fopen("economie.out","w");
	fscanf(in,"%d",&n);
	for (i=0;i<n;i++)
		fscanf(in,"%d",&a[i]);
	qsort(a,n,sizeof(a[0]),compare);
	for (i=0;i<n;i++)
	{
		if (!c[a[i]])
		{
			nr++;
			b[nr]=a[i];
			for (j=a[i];j<=a[n-1];j++)
			if (!c[j])
			{
				if (j>a[i])
				{
						if (c[j-a[i]])
							c[j]=1;
				}
				else
					if (!c[i])
						if (j%a[i]==0)
							c[j]=1;
				

			}
		}
	}
	fprintf(out,"%d\n",nr);
	for (i=1;i<=nr;i++)
		fprintf(out,"%d\n",b[i]);
	fclose(in);
	fclose(out);
}