Cod sursa(job #39285)

Utilizator ionescu_bogdanIonescu Bogdan-Gabriel ionescu_bogdan Data 26 martie 2007 16:36:36
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define nmax 32

int n,k,i,j,path[nmax];
double p[nmax],pp,sol,nr;

int back(int lvl)
{
	if (lvl==k)
		sol+=pp,nr++;
	else
	{
		for (path[lvl]=(lvl>0?path[lvl-1]+1:0);path[lvl]<n;path[lvl]++)
		{
			pp*=p[path[lvl]];
			back(lvl+1);
			pp/=p[path[lvl]];
		}
	}
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);

	scanf("%d%d",&n,&k);
	for (i=0;i<n;i++)
		scanf("%lf",&p[i]);
	pp=1;
	sol=nr=0;
	back(0);
	printf("%lf\n",sol/nr);

	return 0;
}