Cod sursa(job #2506374)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 7 decembrie 2019 22:11:43
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <iomanip>
#define nmax 26
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, k;
double sol, p[nmax];

double fact(int n)
{
    double j = 1;
    for (int i = 1; i <= n; i++)
        j *= i;
    return j;
}
void bkt(int k, int last, double prob)
{

    if (k == 0) {
        sol += prob;
        return ;
    }
    for (int j = last + 1; j < n; j++) {
        bkt(k - 1, j, prob * p[j]);
    }
}
int main()
{
    int i;
    fin >> n >> k;
    for(i = 0; i < n; i ++)
        fin >> p[i];

    for (int i = 0; i < n; i++) {
        bkt(k - 1, i,  p[i]);
    }
    fout << setprecision(6) << sol * fact(n - k) * fact(k) / fact(n);
    return 0;
}