Cod sursa(job #2685839)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 17 decembrie 2020 20:13:44
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

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

int n, k, comb[26], ap[26], nrSol;
float prob[26], sol;

void dp ( int lvl, float res ) {

    if ( lvl > k ) {
        sol += res;
        nrSol++;
        return;
    }

    for ( int i = 1; i <= n; i++ ) {
        if ( ap[i] )
            continue;

        comb[lvl] = i;
        ap[i] = 1;
        dp ( lvl+1, res * prob[i] );
        ap[i] = 0;
    }
}

void solve () {
    dp(1, 1);
    sol /= nrSol;
}

void read () {
    fin >> n >> k;

    for (int i = 1; i <= n; i++)
        fin >> prob[i];
}

int main()
{
    read();
    solve();

    fout << sol << "\n";
    return 0;
}