Pagini recente » Cod sursa (job #2742962) | Cod sursa (job #2533692) | Cod sursa (job #2552965) | Cod sursa (job #2620572) | Cod sursa (job #2504801)
#include <iostream>
#include <fstream>
using namespace std;
#define N 32
long double S = 1, ans, v[N], P, cnt;
int sel[N], n, k;
void bkt1 (long double p, int it){
if (it == k){
++cnt;
P += S / p;
return;
}
for (int i = 0; i < n; ++i)
if (!sel[i]){
sel[i] = 1;
bkt1 (p * v[i],it + 1);
sel[i] = 0;
}
}
void bkt2 (long double p, int it){
if (it == k){
++cnt;
P += p;
return;
}
for (int i = 0; i < n; ++i)
if (!sel[i]){
sel[i] = 1;
bkt2 (p * v[i],it + 1);
sel[i] = 0;
}
}
int main()
{
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
fin >> n >> k;
for (int i = 0; i < n; ++i){
fin >> v[i];
S *= v[i];
}
if (k > n - k){
k = n - k;
bkt1 (1.0, 0);
}
else
bkt2 (1.0, 0);
ans = P / cnt;
fout << ans;
return 0;
}