Pagini recente » Cod sursa (job #3326600) | Cod sursa (job #1860883) | Cod sursa (job #3352795) | Cod sursa (job #3342232) | Cod sursa (job #1131707)
#include <cstdio>
using namespace std;
int n, k, q, valid[27], comb[27];
double p[27], aux, suma;
void back(int poz)
{
int i;
if (poz>k)
{
q++;
aux=1;
for (i=1; i<=k; i++)
aux*=p[comb[i]];
aux+=0.0000000001;
suma+=aux;
}
else
{
for (i=comb[poz-1]+1; i<=n-k+poz; i++)
if (valid[i]==0)
{
valid[i]=1;
comb[poz]=i;
back(poz+1);
valid[i]=0;
}
}
}
int main()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &k);
int i;
for (i=1; i<=n; i++)
{
scanf("%lf", &p[i]);
p[i]+=0.0000001;
p[i]*=1000000;
p[i]=(int)p[i];
p[i]/=1000000;
p[i]+=0.0000001;
}
back(1);
printf("%0.6lf", suma/q);
return 0;
}