Cod sursa(job #37335)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 24 martie 2007 22:00:45
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)

int n,k;
double P[32],sol=0;

void doit(int i,int k,double x)
{
	if(!k)
	{
		sol+=x;
		return ;
	}	
	FOR(i,i,n-k+1)
		doit(i+1,k-1,x*P[i]);
}

double comb(int n,int k)
{
	double aux=1;
	int i;
	FOR(i,k+1,n+1)
		aux*=i;
	FOR(i,2,n-k+1)
		aux/=i;
	return aux;
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	int i;
	scanf("%d %d",&n,&k);
	FOR(i,0,n)
		scanf("%lf",&P[i]);
	doit(0,k,1);
	printf("%lf\n",sol/comb(n,k));
	return 0;
}