Pagini recente » Cod sursa (job #1370874) | Cod sursa (job #1354421) | Cod sursa (job #814830) | Cod sursa (job #676680) | Cod sursa (job #889357)
Cod sursa(job #889357)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in ("dezastru.in");
ofstream out ("dezastru.out");
#define n 26
int N, K, st[n], contor;
double p[n], Sol;
bool valid (int level)
{
for (int i = 1; i < level; i++)
{
if (st[level] >= st[i]) return false;
}
return true;
}
void use_perm ()
{
double prob = 1;
for (int i = 1; i <= K; i++)
{
prob *= p[st[i]];
}
Sol += prob, ++contor;
}
void back (int level)
{
for (int i = 1; i <= N; i++)
{
st[level] = i;
if (valid (level) == true)
{
if (level == K) use_perm();
else back (level + 1);
}
}
}
int main()
{
int i;
in >> N >> K;
for (i = 1; i <= N; i++) in >> p[i];
back (1);
Sol = Sol / contor;
out << setprecision(6) << Sol;
return 0;
}