Cod sursa(job #1504794)

Utilizator MrTudorTudor Savulescu MrTudor Data 18 octombrie 2015 12:05:58
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
const int maxn = 30;
double v[maxn];
int k, n;
double dp[maxn][maxn];

int fact(int n)
{
    if(n == 1)
        return 1;
    return n * fact(n - 1);
}

int comb(int n, int k)
{

    if(k == 1)
        return n;
    if(n == k)
        return 1;
    return comb(n - 1, k) + comb(n - 1, k - 1);
}

int main()
{

    in >> n >> k;
    for(int i = 1; i <= n; i++)
        in >> v[i];
    for(int i = 0 ; i <= n ; ++ i)
        dp[i][0] = 1;
    for(int i = 1 ; i <= n ; ++ i)
        for(int j = 1 ; j <= min(i, k) ; ++ j)
            dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * v[i];
    out << dp[n][k] / comb(n, k) << '\n';
    return 0;
}