Cod sursa(job #414188)

Utilizator lunat1cHobinca Bogdan lunat1c Data 9 martie 2010 20:03:37
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 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_t*=prob[poz[a]];
				suma+=suma_t;
				contor++;
				suma_t/=prob[poz[a]];
			}
			else 
			{
				suma_t*=prob[poz[a]];
				poz[++a]=0;
			}
		else 
		{
			a--;
			suma_t/=prob[poz[a]];
		}
	}
	suma=suma/contor;
	printf("%f", suma);
	return 0;
}