Cod sursa(job #1838848)

Utilizator antanaAntonia Boca antana Data 1 ianuarie 2017 22:00:41
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>

#define MAXN 26

using namespace std;

double p[MAXN], a[MAXN][MAXN], ans;
unsigned long long nfact, nkfact;

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

    int i, n, k, j;

    scanf("%d%d", &n, &k);

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

    a[1][1] = p[1];
    a[1][0] = 1;

    for(i=2; i<=n; ++i)
    {
       a[2][0] = 1;
        for(j=1; j<=k; ++j)
            a[i][j] = a[i-1][j] + p[i]*a[i-1][j-1];
    }

    nfact = nkfact = 1;

    for(i=k+1; i<=n; ++i) nfact *= i;
    for(i=1; i<=n-k; ++i) nkfact *= i;

    printf("%lf", a[n][k]*(1.0*nkfact/nfact));

    return 0;
}