Cod sursa(job #37736)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 25 martie 2007 12:17:12
Problema Dezastru Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 0.66 kb
#include <stdio.h>
#include <math.h>

int s[30];
int i,n,m;
double a[30];
double sum;
long long comb=1, fact=1;

void verif()
{
	double p=1;
	for (int i=1; i<=m; ++i) p*=a[s[i]];
	sum+=p*fact/comb;
}

void back(int x)
{
	if (x<m)
	{
		for (int poz=s[x-1]+1; poz<=n; ++poz)
		{
			s[x]=poz;
			back(x+1);
		}
	}
	else
	{
		for (int poz=s[x-1]+1; poz<=n; ++poz)
		{
			s[x]=poz;
			verif();
		}
	}
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	scanf("%d %d",&n,&m);
	for (i=1; i<=n; ++i) comb*=i;
	for (i=1; i<=m; ++i) fact*=i;
	//comb/=fact;
	for (i=1; i<=n; ++i) scanf("%lf",&a[i]);
	back(1);
	printf("%.6lf\n",sum);
	return 0;
}