Cod sursa(job #157862)

Utilizator Marinescu_DanyelMarinescu George Marinescu_Danyel Data 13 martie 2008 12:25:48
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<math.h>
#include<stdio.h>
FILE *f1,*f2;
int main ()
{
int n,j,i,v[1000],sters[1000]={0},gata,nrmin=0,aux,sol[1000],k,cat[1000];
f1=fopen("economie.in","r");
f2=fopen("economie.out","w");
fscanf(f1,"%i\n",&n);
for(i=0;i<n;i++)
fscanf(f1,"%i",&v[i]);
sol[nrmin++]=v[0];
for(i=1;i<n;i++)
if(v[i]%v[0]==0)
sters[i]=1;
v[i]=k*v[0];
for(i=1;i<n;i++){
		for(j=i+1;j<n;j++)
			if(v[j]%v[i]==0)
			sters[j]=1;
		if(!sters[i]){
			aux=v[i];
			j=nrmin-1;
			gata=0;
				 do{
						for(j;j>=0;j--){
							cat[j]=aux/sol[j];
							aux=aux%sol[j];}
				 if(aux==0){
						sters[i]=1;
						gata=1;}
				 else{ aux=aux+cat[0]*sol[0];
				 if(aux!=v[i])
				 {j=1;
						 while((j<nrmin-1)&&(cat[j]==0))
						 j++;
				 cat[j]--;
				 aux=aux+sol[j];
				 j=j-1;}
				 }    }
		 while((sters[i]==0)&&(aux!=v[i]));
		 if(!gata)
		 sol[nrmin++]=v[i];
		 else
		 sters[i]=1;}}
fprintf(f2,"%i\n",nrmin);
for(i=0;i<nrmin;i++)
fprintf(f2,"%i\n",sol[i]);
fclose(f1);
fclose(f2);
return 0;}