Cod sursa(job #158838)

Utilizator alex3el_n2oAlex Vladescu alex3el_n2o Data 13 martie 2008 20:34:37
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
int n,m,x[30],nr=0;
float y[30],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)
	{
	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;
}