Cod sursa(job #733093)

Utilizator danalex97Dan H Alexandru danalex97 Data 11 aprilie 2012 14:16:18
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;

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

double A[Dmax][Dmax],P[Dmax];
double C,Sol;
int N,K;

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;
}

void Din()
{
	A[0][0]=1;
	for (int i=1;i<=N;++i)
	{
		A[i][0]=1;
		for ( int j=1;j<=K;++j)
			A[i][j]=A[i-1][j]+A[i-1][j-1]*P[i];
	}
}

int main(void)
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	
	scanf("%d %d",&N,&K);
	for (int i=1;i<=N;++i)
		scanf("%lf",&P[i]);
	
	C=comb(N,K);
	Din();Sol=A[N][K];
	
	Sol/=C;
	printf("%lf\n",Sol);
}