Cod sursa(job #2588800)

Utilizator VanillaSoltan Marian Vanilla Data 25 martie 2020 14:55:46
Problema Dezastru Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream in ("dezastru.in");
ofstream out ("dezastru.out");
int n, k;
vector <double> pr (26);
int rz [26];
bool used[26];
double rs = 0;

void backtrack(int step)
{
    if (step == n+1){
        double temp = pr[rz[1]];
        for (int i = 2; i <= k; i++){
            temp*=pr[rz[i]];
        }
        rs+=temp;
        //cout << "\n";
        return;
    }
    for (int i = 1; i <=n ;i++){
        if (!used[i]){
            used[i] = 1;
            rz[step] = i;
            backtrack(step+1);
            used[i] = 0;
        }
    }
}

int main()
{
    in >> n >> k;
    for (int i = 1; i <= n; i++){
        in >> pr[i];
    }
    backtrack(1);
    int64_t fact = 1;
    for (int i = 2; i <=n; i++)
        fact *=i;
    out << rs / fact;
    return 0;
}