Cod sursa(job #158762)

Utilizator MariusGeantaMarius Geanta MariusGeanta Data 13 martie 2008 20:11:49
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<stdlib.h>
long long x[1001];long long y[1001],min;
long long v[1001],l,t;
int n;
int main()
{	int i,j,s,aux,p;
	FILE *f=fopen("economie.in","r");
	fscanf(f,"%d",&n);
	for (i=1;i<=n;i++)
		fscanf(f,"%lld",&x[i]);
	fclose(f);
	p=n;
	do
	{	for (i=1,s=0;i<p;i++)
			if (x[i]>x[i+1])
			{	t=x[i];x[i]=x[i+1];x[i+1]=t;s=i; }
		p=s;
	}
	while (p>1);
	if (x[1]==1)
	{ min=1;y[1]=1; }
	else
	{
	y[1]=v[1]=x[1];
	min=1;l=1;
	for (i=2;i<=n;i++)
	{   for (j=1,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-1;
		for (j=1;j<=aux;j++)
			v[++l]=v[j]+x[i];
	    }
	}
	}
	FILE *g=fopen("economie.out","w");
	fprintf(g,"%lld\n",min);
	for (i=1;i<=min;i++)
		fprintf(g,"%lld\n",y[i]);
	fclose(g);
	return 0;
}