Cod sursa(job #2514609)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 26 decembrie 2019 15:15:37
Problema Dezastru Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

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

int n, k, v[32], nr;
double prob[32], res;

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

bool valid(int p) {
    return v[p] > v[p-1];
}

bool solutie(int p) {
    return p == k;
}

void calc(int p) {
    double prb = 1.0;
    nr++;
    for(int i = 1; i <= p; i++)
        prb =(double)prb*prob[v[i]];
    res = (double)res+prb;
}

void backtracking(int p) {
    for(int i = 1; i <= n; i++) {
        v[p]= i;
        if(valid(p)) {
            if(solutie(p))
                calc(p);
            else
                backtracking(p+1);
        }
    }
}

int main() {
    citire();
    backtracking(1);
    res = (double)res/ nr;
    fout << res;
}