Cod sursa(job #414195)

Utilizator lunat1cHobinca Bogdan lunat1c Data 9 martie 2010 20:20:33
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>

int N,K;
float prob[26],suma,suma_t;
int poz[26],contor;

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	scanf("%d%d", &N, &K);
	int i,a,c,s;
	for (i=1;i<=N;i++)
		scanf("%f", &prob[i]);
	a=1;
	poz[a]=0;
	suma_t=1;
	while (a>0)
	{
		do
		{	
			if(poz[a]<N)
			{
				poz[a]++,c=1,s=1;
					for (i=1;i<a;i++)
					if(poz[a]<=poz[i])
						c=0;
			}
			else
				s=0;
		} while (s && !c);
		if (s)
			if (a==K)
				suma+=suma_t*prob[poz[a]],contor++;
			else 
				suma_t*=prob[poz[a]],poz[++a]=poz[a-1];
		else
			suma_t/=prob[poz[--a]];
	}
	suma=suma/contor;
	printf("%f", suma);
	return 0;
}