Cod sursa(job #1415948)

Utilizator ZenModeBanuta Mihai ZenMode Data 6 aprilie 2015 22:36:08
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<stdlib.h>


int n, m, *v,nr;
float s = 0;
float *v1;
FILE *g = fopen("dezastru.out", "w");


void citire()
{
	FILE *f = fopen("dezastru.in", "r");
	fscanf(f, "%d%d", &m, &n);
	v1 = (float*)calloc(n, sizeof(float));
	v = (int*)calloc(n, sizeof(int));
	for (int i = 1; i <= m; i++)
	fscanf(f,"%f",&v1[i]);
}

/*void afisare()
{

	for (int i = 0; i < n; i++)
		fprintf(g, "%0.1f ", v1[v[i]]);
	fprintf(g, "\n");
}
*/
void afisare1()
{
	fprintf(g,"%0.6f\n", s/nr);
}


void retinere()
{
	float p = 1;
	for (int i = 0; i < n; i++)
		p = p*v1[v[i]];
	
	s = s + p;
}


int  valid(int k)
{
	for (int i = 0; i < k; i++)
	if ( v[i] == v[k])
		return 0;
	return 1;
}

void BT(int k)
{
	if (k == n)
	{
		nr++;
		retinere(); 
		//afisare();
	}
	else
	for (int i = 1; i <= m; i++)
	{
		v[k] = i;
		if (valid(k))
		{
			k++;

			BT(k);
			k--;
		}

	}
}




int main()
{

	citire();
	BT(0);
	afisare1();
	return 0;

}