Cod sursa(job #1141891)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 13 martie 2014 11:44:45
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
/// Craciun Catalin
///  Dezastru
///   www.infoarena.ro/problema/dezastru
#include <fstream>
#include <iostream>
#include <iomanip>

#define NMax 30

using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");

short n,k;
double A[NMax];
int C[NMax];
double rez;
long long numitor;

void foundComb()
{
	numitor++;
	double temp=1;
	for (short i=1;i<=k;i++)
		temp*=A[C[i]]; 
		
	temp*=k;
	rez+=temp;
}

void comb(int p)
{
	if (p==k+1)
		foundComb();
	else
		for (int i=C[p-1]+1;i<=n-k+p;i++)
		{
			C[p]=i;
			comb(p+1);
		}
}

long long fact(long long x)
{
	long long p=1;
	for (long long i=1;i<=x;i++)
		p*=i;
	
	return p;
}

int main()
{
	f>>n>>k;

	for (short i=1;i<=n;i++)
		f>>A[i];
	f.close();
	
	comb(1);

	rez/=(numitor*k);
	g<<fixed<<setprecision(6)<<rez<<'\n';
	g.close();
	
	return 0;
}