Cod sursa(job #2291280)

Utilizator DordeDorde Matei Dorde Data 27 noiembrie 2018 20:33:42
Problema Dezastru Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iomanip>

using namespace std;
ifstream f ("dezastru.in");
ofstream g ("dezastru.out");
int n , k;
int v [26];
double ans , p [26];
int fact (int n){
    if (! n)
        return 1;
    return fact (n - 1) * n;
}
void calc (){
    double val = p [v [1]];
    for(int i = 2 ; i <= k ; ++ i)
        val *= p [v [i]];
    ans += val;
}
bool viz [26];
void bkt (int strat){
    if (strat == n)
        calc ();
    else
        for(int i = 1 ; i <= n ; ++ i)
            if (! viz [i]){
                viz [i] = true;
                v [strat + 1] = i;
                bkt (strat + 1);
                viz [i] = false;
            }
}
int main()
{
    f >> n >> k;
    for(int i = 1 ; i <= n ; ++ i)
        f >> p [i];
    bkt (0);
    g << fixed << setprecision (6) << ans / fact (n);
    return 0;
}