Cod sursa(job #642980)

Utilizator noobakafloFlorin eu noobakaflo Data 2 decembrie 2011 17:52:49
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
using namespace std;

int n,m,stiva[100];
double probabilitati[100],suma=0;

void back(int k)
{
	int i;
	
	if(k==m)
	{
		float produs=1;
		
		for(i=0; i<m; i++)
			produs=produs*probabilitati[stiva[i]];
		suma=suma+(produs*2);
	}
	else
	{
		if(k>0)
			stiva[k]=stiva[k-1];
		else
			stiva[k]=-1;
		while(stiva[k]<n-m+k)
		{
			stiva[k]++;
			back(k+1);
		}
	}
}

float factorial(int n)
{
	int i;
	float fact=1;
	for(i=1; i<=n; i++)
		fact=fact*i;
	
	return fact;
}

int main()
{
	FILE *in,*out;
	int i;
	
	in=fopen("dezastru.in","r");
	out=fopen("dezastru.out","w+");
	
	fscanf(in,"%d %d",&n,&m);
	for(i=0; i<n; i++)
		fscanf(in,"%lf",&probabilitati[i]);
	back(0);
	fprintf(out,"%.6f",suma/factorial(n));
	
	fclose(in); fclose(out);
	return 0;
	
}