Cod sursa(job #158691)

Utilizator MariusGeantaMarius Geanta MariusGeanta Data 13 martie 2008 19:42:05
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
long x[1001],y[1001];
long long v[10001],l;
int min,n;
int sort_function( const void *a, const void *b)
{
   return( strcmp((char *)a,(char *)b) );
}
int main()
{	int i,j,s,aux;
	FILE *f=fopen("economie.in","r");
	fscanf(f,"%d",&n);
	for (i=0;i<n;i++)
		fscanf(f,"%ld",&x[i]);
	fclose(f);
	qsort(x,n,sizeof(x[0]),sort_function);
	if (x[0]==1)
	{ min=1;y[0]=1; }
	else
	{
	y[0]=v[0]=x[0];
	min=1;l=1;
	for (i=1;i<n;i++)
	{   for (j=0,s=0;j<l&&!s;j++)
		if (x[i]%v[j]==0) s=1;
	    if (!s)
	    {	y[min++]=x[i];
		v[l++]=x[i];aux=l;
		for (j=0;j<aux;j++)
			v[l++]=v[j]+x[i];
	    }
	}
	}
	FILE *g=fopen("economie.out","w");
	fprintf(g,"%d\n",min);
	for (i=0;i<min;i++)
		fprintf(g,"%ld\n",y[i]);
	fclose(g);
	return 0;
}