Cod sursa(job #518005)

Utilizator ioanabIoana Bica ioanab Data 30 decembrie 2010 13:12:37
Problema Dezastru Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
using namespace std;

int st[30],n,k,x;
double num; 
float a[30],sum;

inline int succesor()
{
	if(st[k]<n)
	{
		st[k]++;
		return 1;
	}
	return 0;
}

void tipar()
{
	int i;
	float p;
	p=1;
	for(i=1;i<=x;i++)
	{
		p=(float)p*a[st[i]];
	}
	sum=sum+p;
	num++;
}

void backt()
{
	int as;
	k=1;
	st[k]=st[k-1];
	while(k>0)
	{
		as=succesor();
		if(as)
		{
			if(k==x)
				tipar();				
			else
			{
				k++;
				st[k]=st[k-1];
			}
		}
		else
			k--;
	}
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	int i;
	scanf("%d%d",&n,&x);
	for(i=1;i<=n;i++)
		scanf("%f",&a[i]);
	backt();
	sum=sum/num;
	printf("%.6f",sum+0.00000005);
	return 0;
}