Cod sursa(job #652250)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 23 decembrie 2011 17:10:24
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int n,k,st[26],x;
double s,v[26];
void adauga() 
{
	int i;
	double p;
	p=1;
	for(i=1;i<=k;i++)
		p=p*v[st[i]];
	s=s+p;
	x++;
}
int valid(int p)
{
	int i;
	for(i=1;i<=p-1;i++)
		if(st[p]==st[i])
			return 0;
	return 1;
}
void bktr(int p)
{
	int pval;
	for(pval=1;pval<=n;pval++) {
		st[p]=pval;
		if(valid(p)) 
			if(p==n)
				adauga();
			else bktr(p+1);
	}
}
int main ()
{
	int i;
	ifstream f("dezastru.in");
	ofstream g("dezastru.out");
	f>>n>>k;
	for(i=1;i<=n;i++)
		f>>v[i];
	f.close();
	bktr(1);
	g<<fixed;
	g<<setprecision(6)<<s/x;
	g.close();
	return 0;
}