Cod sursa(job #1747752)

Utilizator SolcanMihaiSolcan Mihai Andrei SolcanMihai Data 25 august 2016 15:44:25
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <vector>

using namespace std;

int n, m;
double probabilitati[30];
double dp[30][30];
int nrTermeni;
int pascal[30];

void citire()
{
    scanf("%d %d", &n, &m);

    for(int i = 0; i < n; i++)
    {
        scanf("%lf", &probabilitati[i]);
    }
}

void combinari()
{
    for(int i = 0; i < n; i++)
    {
        pascal[i] = 1;
    }

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

void dinamic()
{
    for(int i = 0; i < 30; i++)
    {
        dp[i][0] = 1;
    }

    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * probabilitati[i - 1];
        }
    }

    printf("%lf", dp[n][m] / pascal[m]);
}

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

    citire();
    combinari();
    dinamic();

    return 0;
}