Cod sursa(job #2495903)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 19 noiembrie 2019 23:00:55
Problema Dezastru Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>

std::ifstream   input ("dezastru.in");
std::ofstream   output("dezastru.out");

#define MAXN    30

#define num     double
#define llg     long long

int N, K;
num DP[MAXN][MAXN], fact[MAXN];
std::vector <num> V;

int main()
{
    input >> N >> K;
    V.resize(N);
    for (auto &it:V) input >> it;

    fact[0] = 1;
    for (int i=1; i<=N; ++i) fact[i] = fact[i-1]*i;

    DP[0][0] = 1;
    for (int i=1; i<=N; ++i) {
        DP[i][0] = 1;
        for (int j=1; j<=i; ++j)
            DP[i][j] = (DP[i-1][j] + DP[i-1][j-1]*V[i-1]);
    }   output << std::fixed << std:;setprecision(12) << DP[N][K]*fact[K]*fact[N-K]/fact[N];

    return 0;
}