Cod sursa(job #2493352)

Utilizator Pompeii_MarinarulHuza Damian Pompeii_Marinarul Data 16 noiembrie 2019 11:47:48
Problema Dezastru Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fi("dezastru.in");
ofstream fo("dezastru.out");

int n,k,st[30],i;
double p[30],sprob,nrprob,r;

int valid(int niv)
{
    int i;
    for(i=1;i<niv;i++)
    {
        if(st[i]==st[niv])return 0;
    }
    return 1;
}

void bk(int niv,double prob)
{
    int i;
    for(i=1;i<=n;i++)
    {
        st[niv]=i;
        if(valid(niv))
        {
            prob*=p[i];
            if(niv==k)
            {
                sprob+=prob;
                nrprob++;
            }
            else
            {
                bk(niv+1,prob);
            }
            prob/=p[i];
        }
    }
}



int main()
{
    fi>>n>>k;
    for(i=1;i<=n;i++)
    {
        fi>>p[i];
    }
    bk(1,1);
    r=sprob/nrprob;
    fo<<fixed<<setprecision(6)<<r;
    return 0;
}