Cod sursa(job #229572)

Utilizator cotofanaCotofana Cristian cotofana Data 10 decembrie 2008 19:07:38
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>

int n, k, st[26]={0};
long nr=0;
float v[26], P=0, p=1, P2=1;

void back(int in, int op)
{
	int i, n2;
	if (op==2) n2=n-k;
	else n2=k;
	for (i=st[in-1]+1; i<=n; i++)
	{
		st[in]=i;
		p*=v[st[in]];
		if (in<n2) back(in+1, op);
		else
		{
			if (op==1) P+=p;
			else P+=P2/p;
			nr++;
                }
		p/=v[st[in]];
	}
}

int main()
{
	int i;
	freopen("dezastru.in", "r", stdin);
	freopen("dezastru.out", "w", stdout);
	scanf("%d %d\n", &n, &k);
	for (i=1; i<=n; i++) 
	{
		scanf("%f ", &v[i]);
		P2*=v[i];
	}
	if (k>n/2) back(1, 2);
	else back(1, 1);
	printf("%6f\n", P/nr);
	return 0;
}