Cod sursa(job #201423)

Utilizator piroslPiros Lucian pirosl Data 31 iulie 2008 15:56:18
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
//#include<iostream>
//using namespace std;
#include<stdio.h>

double prob[26];
int mask[26];
double c = 0;
int k;
int n;
double valoare;


void aranj(int p)
{
	if(p >= k)
	{
		double pr = 1;
		for(int i=0;i<k;++i)
			pr *= prob[mask[i]];
		valoare += pr;
		++c;
		return;
	}

	int s=(p==0)?0:(mask[p-1]+1);
	for(int i=s;i<n;++i)
	{
		mask[p] = i;
		aranj(p+1);
	}
}

int main(void) 
{
	freopen("dezastru.in", "r", stdin);
	freopen("dezastru.out", "w", stdout);
	scanf("%d %d\n", &n, &k);
	//cin >> n >> k;
	for(int i=0;i<n;++i) 
	{
		float a;
		scanf("%f", &a);
		prob[i] = a;
		//cin >> prob[i];
	}
	aranj(0);
	printf("%0.6f\n", valoare/c);//cout << valoare / c << endl;
	return 0;
}