Pagini recente » Cod sursa (job #69857) | Cod sursa (job #949554) | Cod sursa (job #177285) | Cod sursa (job #2673349) | Cod sursa (job #1503409)
#include <iostream>
using namespace std;
const int MAXN = 26;
int n, k, st[MAXN];
double p[MAXN], ans = 0;
void bt(int q) {
for (int i = 1; i <= n; ++i) {
st[q] = i;
int valid = 1;
for (int j = 1; j <= q - 1; ++j) {
if (!(st[j] < st[q])) {
valid = 0;
break;
}
}
if (valid) {
if (q == k) {
double lans = 1;
for (int j = 1; j <= k; ++j) {
lans *= p[st[j]];
}
lans *= 2;
ans += lans;
} else {
bt(q + 1);
}
}
}
}
int main()
{
#ifdef LOCAL
freopen("input", "r", stdin);
#else
ifstream cin("dezastru.in");
ofstream cout("dezastru.out");
#endif // LOCAL
cin >> n >> k;
for (int i = 1; i <= n; ++i) {
cin >> p[i];
}
bt(1);
for (int i = 1; i <= n; ++i) {
ans /= i;
}
cout << ans;
return 0;
}