Cod sursa(job #1251868)

Utilizator alexb97Alexandru Buhai alexb97 Data 29 octombrie 2014 23:00:11
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <cmath>
using namespace std;

ifstream is("dezastru.in");
ofstream os("dezastru.out");
//ifstream is("test.in");
//ofstream os("test.out");

int n, x[50], p;
bool s[50];
double nr[50], sol[50], fin;
int cnt;

void Back(int k);

int main()
{
    is >> n >> p;
    sol[0] = 1;
    for(int i = 1; i <= n; ++ i)
    {
        is >> nr[i];
    }
    Back(1);
    for(int i = 0; i < cnt; ++i)
    {
        fin += sol[i]/cnt;
    }
    os << setprecision(6) << fin;
    is.close();
    os.close();
    return 0;
}

void Back(int k)
{
    if(k > p)
    {
        for(int i = 1; i < k; ++i)
            sol[cnt] *= nr[x[i]];
        sol[++cnt] = 1;
        return;
    }
    for(int i = 1; i <= n; ++i)
    {
        x[k] = i;
        if(!s[x[k]])
        {
            s[x[k]] = true;
            Back(k+1);
            s[x[k]] = false;
        }
    }
}