Pagini recente » Cod sursa (job #2585052) | Cod sursa (job #156157) | Cod sursa (job #1915305) | Cod sursa (job #2269176) | Cod sursa (job #2177684)
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
long long n, k, b[30];
ld a[30], ans, f[30], nr;
void bktr(int q){
if (q == k){
ld rs = 1;
for (int i=1; i<=k; i++) rs *= a[b[i]];
ans += rs * f[k];
nr += f[k];
return;
}
else{
for (int i=b[q] + 1; n - i >= k - q - 1; i++) b[q + 1] = i, bktr(q + 1);
}
}
int main(){
ifstream cin ("dezastru.in");
ofstream cout ("dezastru.out");
cin >> n >> k;
if (!k){
cout << 0;
return 0;
}
for (int i=1; i<=n; i++) cin >> a[i];
f[0] = 1;
for (int i=1; i<=25; i++) f[i] = f[i-1] * i;
bktr(0);
cout << fixed << setprecision(6) << ans / nr;
return 0;
}