Pagini recente » Cod sursa (job #1316719) | Cod sursa (job #2333525) | Cod sursa (job #1363067) | Cod sursa (job #999927) | Cod sursa (job #2177678)
#include <bits/stdc++.h>
using namespace std;
typedef long double ld;
long long n, k, nr, cnt, b[30];
ld a[30], ans, f[30];
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];
}
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;
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;
}