Pagini recente » Cod sursa (job #752363) | Cod sursa (job #3180807) | Cod sursa (job #2121727) | Cod sursa (job #2621797) | Cod sursa (job #2211585)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dezastru.in");
long long F[26],np=0;
int n,km,S[26];
float P[26],s;
/*long long fact(int a){
if(F[a]) return F[a];
else {
F[a]=fact(a-1)*a;
return F[a];
}
}*/
//int o=0;
void bk(int k){
if(k<=km){
for(int i=S[k-1]+1;i<=n;i++){
S[k]=i;
bk(k+1);
S[k]=0;
}
}else{
float p=1;
// o++;
// cerr<<o<<": ";
for(int i=1;i<=km;i++){
p*=P[S[i]];
//cerr<<S[i]<<' ';
}
// cerr<<": "<<p<<' ';
// cerr<<p*fact(n-km)*2<<'\n';
np++;
s+=p;
}
}
int main(){
freopen ("dezastru.out","w",stdout);
F[1]=1;
fin>>n>>km;
for(int i=1;i<=n;i++) fin>>P[i];
//np = fact(n);
bk(1);
// cerr<<s<<' '<<np<<'\n';
s/=np;
printf("%.6f",s);
//cerr<<clock()*1000.0/CLOCKS_PER_SEC<<'\n';
return 0;
}