Cod sursa(job #394058)

Utilizator HoriaClementHoriaC HoriaClement Data 10 februarie 2010 14:10:22
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>

int sol[16],k,n;
long long cnt;
double v[26],sg,sum;

long long fact(int y,int x)
{
	long long a=1;
	for(int i=y+1;i<=x;++i)
		a*=i;
	return a;
}

void edit()
{
	double pg=1;
	for(int i=1;i<=k;++i)
		pg*=v[sol[i]];
	cnt++;
	sg += pg;
	//printf("%lf sg=%lf\n",pg,sg);
}
void bkt(int p)
{
	if (p==k+1)
	{
		edit();
		return;
	}
	for (int i=sol[p-1]+1;i<=n;++i)
	{
		sol[p]=i;
		bkt(p+1);
	}
}
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("%lf",&v[i]);
	bkt(1);
	sum=sg/cnt;
	printf("%lf",sum);
	return 0;
}