Cod sursa(job #36571)

Utilizator grecoTiberiu-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;
}