Pagini recente » Cod sursa (job #2548725) | Cod sursa (job #1188221) | Cod sursa (job #2911664) | Cod sursa (job #1480768) | Cod sursa (job #1680197)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
const int N_max = 27;
double p[N_max];
int sol[N_max];
double P, nr;
int N, K;
void write()
{
double pc = 1;
for(int i = 1; i <= K; i++) pc = pc * p[ sol[i] ];
P += pc;
nr += 1;
}
void bkt(int p)
{
if(p - 1 == K) write();
else
for(int i = 1 + sol[p - 1]; i <= N - K + p; i++)
{
sol[p] = i;
bkt(p + 1);
}
}
int main()
{
in >> N >> K;
for(int i = 1; i <= N; i++) in >> p[i];
bkt(1);
double ans = P / nr;
out << fixed << setprecision(6) << ans;
return 0;
}