Cod sursa(job #1451178)

Utilizator greenadexIulia Harasim greenadex Data 16 iunie 2015 13:36:13
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <iomanip>

using namespace std;

ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

const int MAX = 26;
double dp[MAX][MAX], p[MAX];
int n, k;
double fact[MAX];

int main() {
    fin >> n >> k;
    fact[0] = 1;
    for (int i = 1; i <= n; i++)
        fact[i] = fact[i - 1] * i;

    double c = fact[n];
    c /= fact[n - k];
    c /= fact[k];

    for (int i = 1; i <= n; i++) {
        fin >> p[i];
        dp[i][1] = p[i] + dp[i - 1][1];
    }
    for (int i = 2; i <= n; i++)
        for (int j = 2; j <= k; j++)
            dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * p[i];

    fout << fixed << setprecision(7) << dp[n][k] / double(c);
    return 0;
}