Cod sursa(job #1567613)

Utilizator CollermanAndrei Amariei Collerman Data 13 ianuarie 2016 16:43:49
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");

const int NMAX = 26;

int n, k;
double v[NMAX], sol[NMAX + 3][NMAX + 3];

double comb(double m, double q)
{
    if (q * 2 > n) q = m - q;
    if (!q) return 1;

    double rez = m;

    for(double i = 2; i <= q; ++i ) {
        rez *= m - i + 1;
        rez /= i;
    }

    return rez;
}

int main()
{
    fin >> n >> k;
    for(int i = 1; i <= n; ++i)
        fin >> v[i];

    sol[2][0] = sol[1][0] = 1; sol[1][1] = v[1];

    for(int i = 2; i <= n; ++i, sol[i][0] = 1)
        for(int j = 1; j <= k; ++j)
            sol[i][j] = sol[i-1][j] + v[i] * sol[i-1][j-1];

    fout << sol[n][k] / comb(n, k) << '\n';
    return 0;
}