Cod sursa(job #1141875)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 13 martie 2014 11:29:27
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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;
float A[NMax];
int C[NMax];
float rez;
long long numitor;

void foundComb()
{
	float 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;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;
	numitor=fact(n);
	for (short i=1;i<=n;i++)
		f>>A[i];
	f.close();
	
	comb(1);

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