Cod sursa(job #589401)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 12 mai 2011 08:49:25
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
#include<bitset>

using namespace std;

#define Nmax 26

int st[Nmax], N, M, k, nraranj;
double A[Nmax], sum;
bitset<Nmax> viz;

void back(int k) {
	if(k==M+1) {
		++nraranj;
		int i;
		double prod=1;
		for(i=1; i<=M; i++)
			prod*=A[st[i]];
		sum+=prod;
	}
	else {
		int i;
		for(i=1; i<=N; i++)
			if(!viz[i]) {
				st[k]=i;
				viz[i]=1;
				back(k+1);
				viz[i]=0;
			}
	}
}

int main() {
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	
	int i;
	scanf("%d %d",&N,&M);
	for(i=1; i<=N; i++)
		scanf("%lf",&A[i]);
	back(1);
	sum/=nraranj;
	printf("%.6lf",sum);
	
	return 0;
}