Cod sursa(job #265170)

Utilizator zlatebogdanZlate Bogdan zlatebogdan Data 23 februarie 2009 15:09:38
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>
int n,k,sol[30],prod=1;
double a[30],sum=0,prodpart=1;
void afis()
{
	for(int i=1;i<=k;++i)
		printf("%lf ",a[sol[i]]);
	printf("\n");
}
void fact()                                            
{													
	int x=0,i;												 
	for(i=k+1;i<=n;++i)										 		
	{														 	
		x++;					
		prod*=i;										 		
		if (x<=n-k)											 		
			if(prod%x==0)									 	
				prod=prod/x;								 
	}									
}															 
double calc()												
{
	int i;
	double prodpart=1;
	for(i=1;i<=k;++i)
		prodpart=prodpart*a[sol[i]];
	return prodpart;
}
void back(int x,double q,int d)
{
	int i;
	if (x==k+1)
	{
		sum+=q;
//		afis();
		return;
	}
	for(i=d+1;i<=n+x-k;++i)
	{
		//sol[x]=i;
//		prodpart*=a[sol[x]];
		back(x+1,q*a[i],i);
//		prodpart/=a[sol[x]];
	}
}

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",&a[i]);
//	for(i=1;i<=n;++i)
//		printf("%lf ",a[i]);
	fact();
//	printf("%d ",prod);
	back(1,1,0);
	printf("%lf",sum/prod);
	return 0;
}