Cod sursa(job #1251864)

Utilizator alexb97Alexandru Buhai alexb97 Data 29 octombrie 2014 22:56:46
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <cmath>
using namespace std;

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

int n, x[26], p;
bool s[26];
double nr[26], sol[26], 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 << 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;
        }
    }
}