Pagini recente » Cod sursa (job #617792) | Cod sursa (job #2821716) | Cod sursa (job #2740349) | Cod sursa (job #1128167) | Cod sursa (job #2133536)
#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;
}