Cod sursa(job #154241)

Utilizator mithyPopovici Adrian mithy Data 11 martie 2008 00:35:56
Problema Dezastru Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define NMax 50

int n, m, perm, comb[NMax], uz[NMax];
double a[NMax], sume[NMax], sum;

void citire();
void bkt( int k );

int main()
{
	int i;

	citire();
	bkt(0);

	for (i=0; i<perm; i++)
		sum += (double)(sume[i]/perm);

	printf( "%lf\n", sum );

	return 0;
}
void bkt( int k )
{
	int i;
	double prod = 1;

	if ( k >= m )
	{
 		for (i=0; i<m; i++)
			prod *= (double)a[comb[i]-1];
// 			printf( "%d ", comb[i] );
// 		printf( "\n" );

		sume[perm++] = prod;
		return;
	}

	for (i=1; i<=n; i++)
		if ( !uz[i] )
		{
			uz[i] = 1; comb[k] = i;
			bkt(k+1);
			uz[i] = 0;
		}
}
void citire()
{
	int i;

	freopen( "dezastru.in", "rt", stdin );
	freopen( "dezastru.out", "wt", stdout );

	scanf( "%d %d", &n, &m );
	for (i=0; i<n; i++)
	{
		scanf( "%lf", &a[i] );
		
	}
}