Cod sursa(job #2326846)

Utilizator st_marianStoica Marian st_marian Data 24 ianuarie 2019 09:37:53
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, k;
bool fr[30];
double p[30];
double rezultat;
vector<double> sol;
vector<double> f;
void bkt(int poz, int k);
void posibilitati(double &r);
int main()
{
    fin>>n>>k;
    for(int i=1; i<=n; i++) fin>>p[i];
    bkt(0, k);
    posibilitati(rezultat);
    fout<<fixed<<setprecision(6)<<rezultat<<'\n';
    return 0;
}
void posibilitati(double &r)
{
    int cate=f.size();
    for(int i=0; i<f.size(); i++)   r+=f[i]/cate;
}
void bkt(int poz, int k)
{
    if(poz==k)
    {
        double temp=sol[0];
        for(int i=1; i<sol.size(); i++) temp*=sol[i];
        f.push_back(temp);
        return;
    }
    for(int i=1; i<=n; i++)
    {
        if(!fr[i])
        {
            sol.push_back(p[i]);
            fr[i]=1;
            bkt(poz+1, k);
            sol.pop_back();
            fr[i]=0;
        }
    }
}