Cod sursa(job #1895188)

Utilizator RalucaIosubIosub Raluca Nicoleta RalucaIosub Data 27 februarie 2017 20:32:16
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
int N, K, P[26],nrp;
double pr[26],PR;

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

void back(int k)
{
    for(int i=1;i<=N;i++)
    {
        P[k]=i;
        if(valid(k))
            if(k<N)back(k+1);
            else
            {
             nrp++;
             double v=1;
              //calculam probab sa suprav primelor k atacuri
             for(int j=1;j<=K;j++)v=v*pr[P[j]];
             PR=PR+v;
             }
    }
}

int main()
{
    int i;
    //citire
    f>>N>>K;
    for(i = 1; i <= N; i++)f>>pr[i];
    //generare permutari
    back(1);
    //afisare
    g.precision(6);
    g<<fixed<<PR/nrp;
    return 0;
}