Cod sursa(job #809090)

Utilizator dariusdariusMarian Darius dariusdarius Data 7 noiembrie 2012 21:15:00
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <cstdio>
using namespace std;
double p[30];
double dp[30][30];
int n,k;
long long C(int n,int k)
{
	long long r=1;
	int i;
	for(i=1;i<=k;i++)
		r=(long long)r*(long long)(n-i+1)/(long long)i;
	return r;
}
int main()
{
	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]);
    dp[0][0]=1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=i;j++)
            dp[i][j]=dp[i-1][j]+dp[i-1][j-1]*p[i];
    printf("%.6lf\n",dp[n][k]/(long long double)C(n,k));
    return 0;
}