Cod sursa(job #2133536)

Utilizator CozmaCatalinCozma Catalin CozmaCatalin Data 17 februarie 2018 07:22:37
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAX = 27;

int ST[MAX];

int N,K;

double D[MAX];

int Perm;
double Answer;
double Sum = 0;

inline void Read()
{
   in >> N >> K;

    for ( int i = 1; i <= N ; ++i)
    {
        in >> D[i];

    }
}

inline void print(int k)
{
    double Calc = 1;
    for ( int i = 1; i <= k ; ++i)
        Calc *= D[ST[i]];

    Sum+=Calc;



        Answer++;
}

inline bool Valid(int k)
{
    for ( int i = 1 ; i < k ; ++i)
        if(ST[i] == ST[k])
        return false;

    return true;
}

void Back(int Level, int k)
{
    for ( int i = 1; i <= N ; ++i)
    {
        ST[Level] = i;

        if(Valid(Level))
        {
            if(Level == k)
                print(Level);
            else Back(Level+1,k);
        }
    }
}

int main()
{


    Read();

    Back(1,K);

   out <<fixed << setprecision(6) << Sum/Answer;


}