Cod sursa(job #1755881)

Utilizator Burbon13Burbon13 Burbon13 Data 11 septembrie 2016 12:57:15
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <iostream>

using namespace std;

const int nmx = 26;

int n,k;
double v[nmx];
double dp[nmx];
double pascal[nmx];

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

void dinamica_sume()
{
    dp[0] = 1;
    for(int i = 1; i <= n; ++i)
        for(int j = min(i,k); j; --j)
            dp[j] = dp[j] + dp[j-1] * v[i];
}

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

void afish()
{
    printf("%f\n", dp[k] / pascal[k]);
}

int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    citire();
    dinamica_sume();
    dinamica_triunghi_pascal();
    afish();
    return 0;
}