Pagini recente » Borderou de evaluare (job #836209) | Cod sursa (job #2166270) | Cod sursa (job #116903) | Borderou de evaluare (job #143608) | Cod sursa (job #1988014)
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX=30;
double v[NMAX],s;
int n,k,vv[NMAX];
long long comb;
void combinari(int ind, int nr){
if(ind>k){
double prod=1;
for(int i=1;i<=k;i++)
prod*=v[vv[i]];
s+=(double)prod/comb;
return ;
}
for(int i=nr+1;i<=n;i++){
vv[ind]=i;
combinari(ind+1, i);
}
}
int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d", &n, &k);
comb=1;
for(int i=max(k, n-k)+1;i<=n;i++)
comb*=i;
for(int i=1;i<=min(k, n-k);i++)
comb/=i;
for(int i=1;i<=n;i++)
scanf("%lf", &v[i]);
combinari(1, 0);
printf("%.6f", s);
return 0;
}