Cod sursa(job #2514617)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 26 decembrie 2019 15:28:24
Problema Dezastru Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 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(double p) {
    nr++;
    res = (double)res+p;
}

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

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