Cod sursa(job #662467)

Utilizator harababurelPuscas Sergiu harababurel Data 16 ianuarie 2012 19:04:26
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, p, i, st[26], permutari=0;
double prob[26], sumprob=0, rezultatfinal=0;

ifstream f("dezastru.in");
ofstream g("dezastru.out");
int valid(int k) {
	int i;
    double produs=1;
	sumprob=0;
	for(i=1; i<k; i++) { 
		if(st[i]==st[k]) { return 0; }
	}
	
	if(k==n) {
		for(int j=1; j<=p; j++) {
			produs*=prob[st[j]];
		}
		sumprob=produs;
		//g<<sumprob<<" ";
		
		rezultatfinal+=sumprob;
		permutari++;
	}
	
	
	return 1;
}
void back(int k) {
	int i, j;
	for(i=1; i<=n; i++) {
		st[k]=i;
		if(valid(k)) {
			if(k!=n) { back(k+1); }
		}
	}
}

int main() {
	f>>n>>p;
	for(int z=1; z<=n; z++) {
		f>>prob[z];
	}
	back(1);
	g<<rezultatfinal/permutari;
	f.close();
	g.close();
	return 0;
}