Cod sursa(job #1696854)

Utilizator NicuBaciuNicu Baciu NicuBaciu Data 30 aprilie 2016 00:12:07
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <queue>

using namespace std;

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

int N, K;
double p[30];
int a[30];

bool v[30];

queue <double> q;

void prob(int n, int k)
{
    if(k>0)
    {
        for(int i=1; i<=n; i++)
        {
            if(!v[i])
            {
                v[i]=true;

                a[K-k+1]=i;

                prob(n, k-1);

                v[i]=false;
            }
        }
    }
    else
    {
        double mult=1;

        for(int i=1; i<=K; i++)
            mult=mult*p[a[i]];

        q.push(mult);
    }
}

int main()
{
    fin >> N >> K;

    for(int i=1; i<=N; i++)
        fin >> p[i];

    prob(N, K);

    double suma=0;
    int ct=0;

    while(!q.empty())
    {
        double x;

        x=q.front();
        q.pop();

        suma+=x;
        ct++;
    }

    fout.precision(6);

    fout << suma/ct;

    return 0;
}