Cod sursa(job #134235)

Utilizator coderninuHasna Robert coderninu Data 10 februarie 2008 23:40:57
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
#define Nmax 26

double a[Nmax], rez;
int i, st[Nmax], n, k;
long long imp, inm;
short uz[Nmax];

void bkt(int i)
{
	if (i>k)
	{
		double temp=1;
		for (int j=1; j<=k; j++) temp*=a[st[j]];
		rez+=temp;
		imp++;
	}
	else
	{
		for (int j=1; j<=n; j++)
		if (!uz[j])
		{
			st[i]=j;
			uz[j]=1;
			bkt(i+1);
			uz[j]=0;
		}
	}
}


int main()
{
	freopen("dezastru.in", "r", stdin);
	scanf("%d %d\n", &n, &k);
	for (i=1; i<=n; i++)
		scanf("%lf ", &a[i]);
	fclose(stdin);
	freopen("dezastru.out", "w", stdout);
	//for (imp=1, i=1; i<=n; i++) imp*=i;
	//for (inm=1, i=1; i<=k; i++) inm*=i;
	bkt(1);
	printf("%.6lf", rez/imp);
	fclose(stdout);
	return 0;
}