Cod sursa(job #810723)

Utilizator Mihnea35Gall Mihnea Mihnea35 Data 10 noiembrie 2012 21:13:53
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>

using namespace std;

int x[26],n,k,nr;
double p[26],s;

void citire ()	{
	int i;
	ifstream f ("dezastru.in");
	f>>n>>k ;
	for (i=1;i<=n;i++) f>>p[i];
	f.close();
}

int valid (int a) {
	int i;
	for (i=1;i<=a-1;i++)
		if (x[i]==x[a]) return 0;
	return 1;
}

double actualizare ()	{
	double pp=1;
	int i;
	for (i=1;i<=k;i++) pp*=p[x[i]] ;
	return pp ;
}

void back (int a) {
	int i;
	for (i=1;i<=n;i++) {
		x[a]=i;
		if (valid(a))
			if (a==n) {
				nr++;
				s+=actualizare();
			}
			else back(a+1);	
	}
}

int main ()	{
	citire();
	back(1);
	ofstream g ("dezastru.out");
	g<<s/nr;
	g.close();
return 0;
}