Cod sursa(job #39077)

Utilizator crusRus Cristian crus Data 26 martie 2007 13:30:00
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define input "dezastru.in"
#define output "dezastru.out"
#define nmax 30
long i,n,k,st[nmax];
float v[nmax],sum;
long cnt;
void citire()
{
	FILE *fin;
	fin=fopen(input,"r");
	fscanf(fin,"%ld %ld",&n,&k);
	for (i=1;i<=n;i++)
        fscanf(fin,"%f",&v[i]);
	fclose(fin);
}
void back(int niv, float prod)
{
 for (register int i=st[niv-1]+1;i<=n;i++)
	{
	 st[niv]=i;
	 if (niv==k) {cnt+=1; sum+=prod*v[i];}
	    else back(niv+1,prod*v[i]);
	}
}
void solve()
{
	cnt=0; sum=0;
	back(1,1);
}
void afisare()
{
	FILE *fout;
	fout=fopen(output,"w");
	fprintf(fout,"%.6f",sum/cnt);
	fclose(fout);
}
int main()
{
	citire();
	solve();
	afisare();
	return 0;
}