Pagini recente » Cod sursa (job #722177) | Cod sursa (job #2647518) | Cod sursa (job #310982) | Cod sursa (job #905832) | Cod sursa (job #158862)
Cod sursa(job #158862)
#include <stdio.h>
int n,m,x[32],nr=0;
float y[32],P=0;
void init(int k)
{
x[k]=0;
}
int succ(int k)
{
if (x[k]<n)
{
++x[k];
return 1;
}
else return 0;
}
int valid(int k)
{
if (k==n) return 0;
for (int i=1;i<k;++i)
if (x[i]>=x[k]) return 0;
return 1;
}
int sol(int k)
{
return (k==m+1);
}
void proc()
{
float l=1;
++nr;
for (int i=1;i<=m;++i)
l*=y[x[i]];
P+=l*2;
}
void back(int k)
{
if (sol(k)) proc();
else
{
init(k);
while (succ(k))
if (valid(k)) back(k+1);
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d %d",&n,&m);
for (int i=1;i<=n;++i)
scanf("%f",&y[i]);
back(1);
printf("%.6f\n",float(P/(nr*2)));
return 0;
}