Cod sursa(job #1680197)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 8 aprilie 2016 16:08:00
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

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

const int N_max = 27;

double p[N_max];

int sol[N_max];

double P, nr;

int N, K;

void write()
{
    double pc = 1;

    for(int i = 1; i <= K; i++) pc = pc * p[ sol[i] ];

    P += pc;
    nr += 1;
}

void bkt(int p)
{
    if(p - 1 == K) write();
    else
        for(int i = 1 + sol[p - 1]; i <= N - K + p; i++)
        {
            sol[p] = i;
            bkt(p + 1);
        }
}

int main()
{
    in >> N >> K;

    for(int i = 1; i <= N; i++) in >> p[i];

    bkt(1);

    double ans = P / nr;

    out << fixed << setprecision(6) << ans;

    return 0;
}