Cod sursa(job #460858)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 4 iunie 2010 12:34:16
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#define DIMBACK 1<<5

int X[DIMBACK], viz[DIMBACK];
int N, K, NRCOMB; 
double A[DIMBACK], PROB;

void back (int k){
	int i;
	
	if (k - 1 == K){
		double aux = 1;
		for (i=1; i<=K; i++)
			aux *= A[ X[i] ];
		PROB += aux;
		NRCOMB++;
		return;
	}		
	
	for (i = 1; i<=N; i++){
		if (!viz[i]){
			X[k] = i;
			viz[i] = 1;
			back (k + 1);
			viz[i] = 0;
		}
	}	
}

int main (){
	
	freopen ("dezastru.in", "r", stdin);
	freopen ("dezastru.out", "w", stdout);
	
	scanf ("%d %d\n", &N, &K);
	
	for (int i=1; i<=N; i++) scanf ("%lf", &A[i]);
	
	back (1);
	
	printf ("%.6lf", PROB / (double)NRCOMB);

	return 0;
}