Pagini recente » Cod sursa (job #2588181) | Cod sursa (job #818599) | Cod sursa (job #2800213) | Cod sursa (job #670002) | Cod sursa (job #1981628)
#include<stdio.h>
FILE *in = fopen("dezastru.in", "r"),
*out = fopen("dezastru.out", "w");
using namespace std;
int n, k, c, nrsol;
double s = 0;
const int N = 25;
bool viz[N];
int v[N];
double p[N], prob = 1;
void bkt()
{
if(c == k)
{
nrsol++;
s += prob;
return;
}
int i;
for(i = v[c] + 1; i <= n; i++)
{
if(viz[i] == false)
{
prob *= p[i];
viz[i] = true;
v[++c] = i;
bkt();
prob /= p[i];
viz[i] = false;
--c;
}
}
}
int main(){
int i;
fscanf(in, "%d%d", &n, &k);
for(i = 1; i <= n; i++)
fscanf(in, "%lf", &p[i]);
bkt ();
fprintf (out, "%.6lf", s / nrsol);
return 0;
}