Cod sursa(job #264663)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 22 februarie 2009 16:01:09
Problema Dezastru Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>

const int N = 26;

int n,k,nrs=0;
float pg=0;
float p[N],sol[N];
bool marcat[N];

void citire()
{
	scanf ("%d %d",&n,&k);
	for (int i = 1; i <= n; ++i)
		scanf ("%f",&p [i]);
}

void adaugare_probab_glob()
{
	float pp = 1;
	for (int i = 1; i <= k; ++i)
		pp *= sol [i];
	pg += pp;
}

void avansare(int poz)
{
	for (int i = 1; i <= n; ++i)
		if (!marcat[i])
		{
			marcat[i]=true;
			sol [poz] = p [i];
			if (poz == k)
			{
				adaugare_probab_glob();
				++nrs;
			}
			else
				avansare (poz+1);
			marcat[i]=false;
		}
}

int main()
{
	freopen ("dezastru.in","r",stdin);
	freopen ("dezastru.out","w",stdout);
	citire();
	avansare(1);
	pg /= nrs;
	printf ("%f",pg);
	return 0;
}