Cod sursa(job #1483653)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 9 septembrie 2015 18:12:21
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
const int maxn = 30;
int v[maxn];
int used[maxn];
double alive[maxn];
int k, n;
double probabilitate = 0;
int n_factorial()
{
    int p = 1;
    for(int i = 1; i <= n; i++)
        p = p * i;
    return p;
}

void back(int poz)
{
    if(poz == k + 1)
    {
        double prod = 1;
        for(int i = 1; i <= k; i++)
            prod = prod * alive[v[i]];
        probabilitate += prod;
    }
    for(int i = 1; i <= n; i++)
    {
        if(used[i] == 0)
        {
            used[i] = 1;
            v[poz] = i;
            back(poz + 1);
            used[i] = 0;
        }
    }
}
int main()
{
    in >> n >> k;
    for(int i = 1; i <= n; i++)
        in >> alive[i];
    back(1);
    out << probabilitate / n_factorial();
    return 0;
}