Cod sursa(job #438065)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 10 aprilie 2010 14:26:01
Problema Dezastru Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>

int N, K;
double prob[30];
double S = 0;
int fact = 0;

void back (int k, double x, int last)
{
	if (k == K + 1)
	{
		S += x;
		fact ++;
	} 
	else
	{
		for (register int i = last + 1; i <= N - K + k; ++i)
			back(k + 1, x * prob[i], i);
	}
}

int main()
{
	freopen ("dezastru.in", "r", stdin);
	freopen ("dezastru.out", "w", stdout);
	
	scanf("%d %d", &N, &K);
	
	for (register int i=1; i<=N; i++) 
		scanf("%lf", &prob[i]);
	
	back(1, 1, 0);
	
	printf("%lf\n", S / fact);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}