Pagini recente » Cod sursa (job #1021459) | Cod sursa (job #1092008) | Cod sursa (job #1756939) | Istoria paginii runda/dedicatie_speciala2 | Cod sursa (job #2505086)
#include <fstream>
using namespace std;
ifstream cin ("dezastru.in");
ofstream cout ("dezastru.out");
int n, k;
long long comb = 1;
long double ans;
long double p[30];
int v[30];
void bkt(int niv) {
if(niv == k + 1) {
long double prod = 1;
for(int i = 1; i <= k; i++)
prod *= p[v[i]];
ans += prod;
return;
}
for(int i = v[niv - 1] + 1; i <= n - (k - niv + 1) + 1; i++) {
v[niv] = i;
bkt(niv + 1);
}
}
int main() {
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> p[i];
if(2 * k > n) {
for(int i = n; i > k; i--)
comb *= i;
for(int i = 2; i <= n - k; i++)
comb /= i;
} else {
for(int i = n; i > n - k; i++)
comb *= i;
for(int i = 2; i <= k; i++)
comb /= i;
}
bkt(1);
cout << ans / comb;
return 0;
}