Cod sursa(job #1747754)

Utilizator calin1Serban Calin calin1 Data 25 august 2016 15:45:47
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <cstdio>

using namespace std;

double tri_pasc[30];
double sume[30][30];
double prob[30];
int n,k;

void init()
{
    for(int i = 0 ; i <= n ; ++i)
    {
        sume[i][0] = 1;
    }
    sume[1][1] = prob[1];
}

void creare_mat()
{
    for(int i = 2 ; i <= n ; ++i)
    {
        for(int j = 1 ; j <= k ; ++j)
        {
            sume[i][j] = sume[i-1][j] + prob[i] * sume[i-1][j-1];
        }
    }
}

void pascal()
{
    tri_pasc[0] = 1;

    for(int i = 1 ; i <= n ; ++i)
    {
        for(int j = i ; j > 0 ; --j)
        {
            tri_pasc[j] += tri_pasc[j-1];
        }
    }
}

void citire()
{
    scanf("%d %d\n",&n,&k);
    for(int i = 1 ; i <= n ; ++i)
    {
        scanf("%lf ",&prob[i]);
    }

    init();
    creare_mat();
    pascal();
}

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

    citire();

    printf("%lf",sume[n][k]/tri_pasc[k]);

    return 0;
}