Cod sursa(job #91749)

Utilizator the1dragonIonita Alexandru the1dragon Data 13 octombrie 2007 13:39:41
Problema Dezastru Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>

float pr[32], sol;
int st[32], sel[32], nr, n, k;

void proc()
{
	int i;
	float temp=1;
	for (i=1; i<=k; i++)
		temp*=pr[st[i]];
	sol+=temp;
}


void back(int nivel)
{
	if (nivel>k) {proc(); ++nr; return;}
	int i;
	for (i=st[nivel-1]+1; i<=n; i++)
	{
		if (!sel[i])
		{
			sel[i]=1;
			st[nivel]=i;
			back(nivel+1);
			sel[i]=0;
		}
	}
}

int main()
{
	freopen("dezastru.in", "r", stdin);
	freopen("dezastru.out", "w", stdout);
	int i;
	float ss=1;
	scanf("%d %d", &n, &k);
	for (i=1; i<=n; i++)
		scanf("%f", &pr[i]);
	back(1);
	ss=ss/nr;
	printf("%f", ss*sol);
	return 0;
}