Pagini recente » Cod sursa (job #1030329) | Cod sursa (job #2157598) | Cod sursa (job #2786396) | Cod sursa (job #2397044) | Cod sursa (job #732352)
Cod sursa(job #732352)
#include<cstdio>
using namespace std;
int n,k,sol[26],uz[26];
double d[26],suma;
double fact[26];
inline void citire()
{
freopen("dezastru.in","r",stdin);
scanf("%d%d",&n,&k);
fact[0]=1;
for(int i=1;i<=n;++i)
scanf("%lf",&d[i]),fact[i]=fact[i-1]*i;
}
inline void afisare()
{
freopen("dezastru.out","w",stdout);
printf("%.6lf\n",suma/fact[n]);
}
inline void aduna()
{
double prod=1;
for(int i=1;i<=k;++i)
prod*=d[ sol[i] ];
suma+=(2*prod);
}
inline void back(int kk)
{
if(kk==k+1)
aduna();
else
for(int i=sol[kk-1]+1;i<=n;++i)
if(!uz[i])
{
sol[kk]=i;
uz[i]=1;
back(kk+1);
uz[i]=0;
}
}
int main()
{
citire();
back(1);
afisare();
}