Cod sursa(job #394061)

Utilizator toniobFMI - Barbalau Antonio toniob Data 10 februarie 2010 14:13:02
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;

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

int N, K, sol [ 25 ];
double suma, v [ 25 ];
long long cnt;

void citire ()
{
	in >> N >> K;
	
	for ( int i = 1; i <= N; ++i )
		in >> v [ i ];
}

void prelucrare ()
{
	double sc = 1;
	
	for ( int i = 1; i <= K ; ++i )
		sc *= v [ sol [ i ] ];
	
	++cnt;
	suma += sc;
}

void bkt ( int p )
{
	if ( p == K + 1 )
	{
		prelucrare ();
		return;
	}
	for ( int i = sol [ p-1 ] + 1; i <= N; ++i )
	{
		sol [ p ] = i;
		bkt ( p + 1 );
	}
}
/*
long long fact ()
{
	long long de_returnat = 1;
	
	for ( int i = N - K + 1; i <= N; ++i )
		de_returnat *= i;
	
	return de_returnat;
}
*/
int main ()
{
	citire ();
	bkt ( 1 );
	
	suma /= cnt;
	
	out << suma;
	
	return 0;
}