Cod sursa(job #256623)

Utilizator shnakoVlad Schnakovszki shnako Data 11 februarie 2009 22:33:57
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
float s=0, f[26], p;
int n, x, k, st[20], o=0;
void prel(int k)
	{
   p=1.000000;
   for (register int j=1;j<=k;j++)
   	p=p*f[st[j]];
   s+=p;
   o++;
	}

int valid (int k)
	{
	for (register int j=1;j<k;j++)
		if (st[k]==st[j])
			return 0;
	return 1;
	}

void back(int k)
	{
	for (int i=1;i<=n;i++)
		{
		st[k]=i;
		if (valid(k))
			if (k==x)
				prel(k);
			else
				back(k+1);
		}
	}
int main(void)
{
freopen ("dezastru.in", "r", stdin);
freopen ("dezastru.out", "w", stdout);
scanf("%d%d", &n, &x);
for (register int i=1;i<=n;i++)
	scanf ("%f", &f[i]);
back(1);
printf ("%f", s/o);
return 0;
}