Cod sursa(job #810853)

Utilizator Mihnea35Gall Mihnea Mihnea35 Data 11 noiembrie 2012 09:02:57
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std;

int x[26],viz[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();
}


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=x[a-1]+1;i<=n;i++) {
		x[a]=i;
		if (!viz[i]) {
			viz[i]=1;
			if (a==k) {
				nr++;
				s+=2*actualizare();
			}
			else back(a+1);
		}
		viz[i]=0;
	}
}

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