Cod sursa(job #63369)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 27 mai 2007 23:31:20
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
#define fin  "dezastru.in"
#define fout "dezastru.out"
#define Nmax 26

double v[Nmax],ret=0,aux=1.0;
int N,K,used[Nmax];

void go(int lv,double tmp) {
int i;
	if ( lv == N + 1 ) {
		ret = ret + (double)tmp / aux;
		//fprintf(stderr,"%lf\n",tmp);
	}
	else 
		for (i=1;i<=N;++i)
			if (!used[i]) {
				used[i]=1;
				if (lv<=K)
					go(lv+1,(double)( tmp * v[i] ));
				else
					go(lv+1,tmp);
				used[i]=0;
			}
}

int main() {
int i;
	freopen(fin,"r",stdin); freopen(fout,"w",stdout);

	scanf("%d%d",&N,&K);

	for (i=1;i<=N;++i) {
		scanf("%lf",&v[i]);
		aux*=i;
	}

	go(1,1.0);
	
	printf("%.6lf\n",ret);

	return 0;
}