Cod sursa(job #1717629)

Utilizator mariakKapros Maria mariak Data 15 iunie 2016 13:14:13
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>
#define Dim 27
FILE *fin  = freopen("dezastru.in", "r", stdin);
FILE *fout = freopen("dezastru.out", "w", stdout);

using namespace std;
int n, k, C[Dim][Dim];
float A[Dim][Dim], p[Dim];
void read()
{
    scanf("%d %d", &n, &k);
    for(int i = 1; i <= n; ++ i)
        scanf("%f", &p[i]);
}
void comb()
{
    int i, j;
    for(i = 0; i <= Dim; ++ i)
        C[i][0] = 1;
    for(i = 1; i <= Dim; ++ i)
        for(j = 1; j <= Dim; ++ j)
            C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
}
void solve()
{
    int i, j;
    comb();
    A[0][0] = 1;
    for(i = 1; i <= Dim; ++ i)
        A[0][i] = (float)0;
    for(i = 1; i <= n; ++ i)
        for(j = 1; j <= k, j <= i; ++ j)
        {
            if(j == 1)
                A[i][j] = (float)(A[i - 1][j] + p[i]);
            else A[i][j] = (float)(A[i - 1][j] + A[i - 1][j - 1] * p[i]);
        }
    A[n][k] = (float)(A[n][k] / C[n][k]);

}
void write()
{
    printf("%.7f\n", A[n][k]);
}
int main()
{
    read();
    solve();
    write();
    return 0;
}