Cod sursa(job #134226)

Utilizator coderninuHasna Robert coderninu Data 10 februarie 2008 22:53:00
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#define Nmax 26

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

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


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\n", rez);
	fclose(stdout);
	return 0;
}