Pagini recente » Cod sursa (job #49358) | Cod sursa (job #2695716) | Cod sursa (job #619041) | Cod sursa (job #697017) | Cod sursa (job #39287)
Cod sursa(job #39287)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define nmax 32
int n,k,i,j,path[nmax],ok;
double p[nmax],pp,sol,nr,pt;
int back(int lvl)
{
if (lvl==k)
sol+=(ok==0?pp:pt/pp),nr++;
else
{
for (path[lvl]=(lvl>0?path[lvl-1]+1:0);path[lvl]<n;path[lvl]++)
{
pp*=p[path[lvl]];
back(lvl+1);
pp/=p[path[lvl]];
}
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d",&n,&k);
pt=1;
for (i=0;i<n;i++)
scanf("%lf",&p[i]),pt*=p[i];
if (k>n/2)
k=n-k,ok=1;
pp=1;
sol=nr=0;
back(0);
printf("%lf\n",sol/nr);
return 0;
}