Cod sursa(job #416521)

Utilizator andreirRoti Andrei andreir Data 12 martie 2010 21:34:21
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 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;

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;
				bkt(p+1);
				viz[i]=0;
			}

	}

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