Cod sursa(job #416525)

Utilizator andreirRoti Andrei andreir Data 12 martie 2010 21:41:33
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>

const int N_max=26;
int n,k,st[N_max],viz[N_max],nr=0;
float pb[N_max],sum=0,prod=1;

void bkt(int p)
{
	int i;
	if(p==k+1)
	{//calc probabilitate ,actualizeaza suma
		nr++; //prod=1;
	//	for(i=1;i<=k;++i)			prod*=pb[st[i]];
		sum+=prod;
	}
	else
	{
		for(i=1;i<=n;++i)
			if(viz[i]==0 && st[p-1]<i)
			{
				viz[i]=1;	st[p]=i;
				prod*=pb[i];

				bkt(p+1);	viz[i]=0; prod/=pb[i];
			}

	}

}
int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;++i)
		scanf("%f",&pb[i]);
	bkt(1);

	printf("%f\n",sum/nr);
	return 0;
}