Cod sursa(job #63371)

Utilizator Binary_FireFlorin Pg Binary_Fire Data 27 mai 2007 23:42:48
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#define fin  "dezastru.in"
#define fout "dezastru.out"
#define Nmax 26

double v[Nmax],ret=0,aux;
int N,K;

inline void go(int lv,int last,double tmp) {
int i;
	if ( lv == K + 1 ) 
		ret = (double) ( ret + tmp );
	else 
		for (i=last+1;i<=N;++i)
			if (N-i>=K-lv)
				go(lv+1,i,(double)( tmp * v[i] ));
}

int main() {
int i,j;
	freopen(fin,"r",stdin); freopen(fout,"w",stdout);

	scanf("%d%d",&N,&K);

	for (i=1;i<=N;++i)
		scanf("%lf",&v[i]);

	go(1,0,1.0);
	
	for (j=1,i=K+1;i<=N;++i,++j) 
		ret = ret * j / i;

	printf("%.6lf\n",ret);

	return 0;
}