Cod sursa(job #750362)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 21 mai 2012 22:17:48
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#define NMAX 26
int sol[5], m[ NMAX ], n, k, i, j, x;
double v[ NMAX ], s, res;
void read()
{
	FILE *f = fopen("dezastru.in", "r");
	fscanf(f, "%d %d", &n, &k);
	for(i = 1; i <= n; i++)
		fscanf(f, "%lf", &v[i]);
	fclose(f);
}
void back(int nr)
{
	int i;
	double p;
	if(nr > k)
	{
		p = 1;
		for(i = 1; i <= k; i++)
			p *= v[ sol[i] ];
		s += p, x++;
	}
	else
	{
		for(i = 1; i <= n; i++)
			if(!m[i])
			{
				sol[nr] = i, m[i] = 1;
				back(nr+1);
				m[i] = 0;
			}
	}
}
void write()
{
	FILE *g = fopen("dezastru.out", "w");
	res = (double) s / x;
	fprintf(g, "%lf\n", res);
	fclose(g);
}
int main()
{
	read();
	back(1);
	write();
	return 0;
}