Cod sursa(job #36571)
Utilizator | Tiberiu-Lucian Florea greco | Data | 23 martie 2007 18:40:50 |
---|---|---|---|
Problema | Dezastru | Scor | 50 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.5 kb |
using namespace std;
#include <cstdio>
int N, K, U[64], cnt;
double v[64], sum;
void back(int lev, double p)
{
int i;
if (lev == K+1)
sum += p, ++cnt;
else
for (i = 1; i <= N; ++i)
if (!U[i]) {
U[i] = 1;
back(lev+1, p*v[i]);
U[i] = 0;
}
}
int main()
{
int i;
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &N, &K);
for (i = 1; i <= N; ++i)
scanf("%lf", v+i);
sum = 0.;
back(1, 1.);
printf("%lf\n", sum/(double)cnt);
return 0;
}