Cod sursa(job #2104197)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 11 ianuarie 2018 13:09:17
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <iomanip>

using namespace std;

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

int n, m;
double valoare[26], uz[26], f[26], probabilitate;
double total_permutari = 0;
double atacuri = 0;

void Read()
{
    in >> n >> m;
    for(int i = 1; i <= n; i++)
        in >> valoare[i];
}

void Calculeaza_Probabilitatea()
{
    double produs = 1;
    for(int i = 1; i <= m; i++)
    {
        int j = f[i];
        produs = produs * valoare[j];
    }
    //out << produs << "\n";
    total_permutari += produs;
}

void GenAranjamente(int k)
{
    if(k-1==m)
    {
        Calculeaza_Probabilitatea();
    }
    else
        for(int i = 1; i <= n; i++)
        if(!uz[i])
        {
            f[k] = i, uz[i] = 1;
            GenAranjamente(k+1);
            uz[i] = 0;
        }
}

double Factorial(int n, int k)
{
    double v = 1;
    for(int i = n - k + 1; i <= n; i++)
        v *= i;
    return v;
}

int main()
{
    Read();
    GenAranjamente(1);
    atacuri = Factorial(n, m);
    out << setprecision(6) << fixed;
    out << total_permutari / atacuri;
    return 0;
}