Pagini recente » Cod sursa (job #1443222) | Cod sursa (job #1827693) | Cod sursa (job #2792162) | Cod sursa (job #15195) | Cod sursa (job #1721107)
#include <cstdio>
using namespace std;
short n,k,st[26],niv,cnt,i;
double perm[27];
void permutari()
{
perm[0]=1;
for(i=1;i<=25;++i)
perm[i]=perm[i-1]*i;
}
double v,val[26];
inline void init()
{
st[niv]=st[niv-1];
}
inline bool succ()
{
if(st[niv]<n)
{++st[niv];return 1;}
return 0;
}
void afis()
{
double p=1;cnt+=perm[k];
for(i=1;i<=k;++i)
p*=val[st[i]];
v+=p*perm[k];
}
void back()
{
niv=1;init();bool s;
while(niv)
{
s=succ();
if(s)
if(niv==k)
afis();
else ++niv,init();
else --niv;
}
}
int main()
{
FILE *f=freopen("dezastru.in","r",stdin),
*g=freopen("dezastru.out","w",stdout);
scanf("%hd %hd",&n,&k);
for(i=1;i<=n;++i)
scanf("%lf",&val[i]);
permutari();
back();
v=v/cnt;
printf("%f",double(v));
}