Cod sursa(job #155443)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 11 martie 2008 22:18:22
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
# include <stdio.h>

const long int MAXN=1000;

long int n,v[MAXN+1],nsol;

void citire()
{
FILE *f=fopen("economie.in","r");
fscanf(f,"%ld",&n);
long int i,j;
for (i=1;i<=n;i++)
	fscanf(f,"%ld",&v[i]);
fcloseall();
}

void quick(long int li, long int lf)
{
long int i=li,j=lf,ii=0,jj=-1,aux;
while (i<j)
	{
	if (v[i]>v[j])
		{
		aux=v[i];v[i]=v[j];v[j]=aux;
		aux=ii;ii=-jj;jj=-aux;
		}
	i+=ii;j+=jj;
	}
if (i-li>1) quick(li,i-1);
if (lf-i>1) quick(i+1,lf);
}

void ciur()
{
long int i,j;
for (i=1;i<=n;i++)
	if (v[i])
		{
		for (j=i+1;j<=n;j++)
			if (v[j]%v[i]==0) v[j]=0;
		nsol++;
		}
}

void scrie()
{
FILE *g=fopen("economie.out","w");
fprintf(g,"%ld\n",nsol);
long int i;
for (i=1;i<=n;i++)
	if (v[i]) fprintf(g,"%ld\n",v[i]);
fcloseall();
}

int main()
{
citire();
quick(1,n);
ciur();
scrie();
return 0;
}