Pagini recente » Cod sursa (job #185156) | Cod sursa (job #1488073) | Cod sursa (job #2883738) | Cod sursa (job #3232987) | Cod sursa (job #2727649)
#include <bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n, k, viz[26], a[26];
double prob[26], ans, aux;
void backt (int p) {
if (p ==k + 1) {
double prod = 1.0;
for (int i = 1; i <= k; i++) {
prod = 1.0 * prod * prob[a[i]];
}
ans += prod * aux;
return;
}
for (int i = a[p - 1] + 1; i <= n; i++)
if (!viz[i]) {
viz[i] = 1;
a[p] = i;
backt(p + 1);
viz[i] = 0;
}
}
int main()
{
fin >> n >> k;
aux = 1;
for (int i = 1; i <= k; i++)
aux *= i;
for (int i = n - k + 1; i <= n;i++)
aux = 1.0 * aux / i;
for (int i = 1; i <= n; i++)
fin >> prob[i];
backt(1);
fout<< fixed << setprecision(9) << ans << "\n";
return 0;
}