Cod sursa(job #642858)

Utilizator noobakafloFlorin eu noobakaflo Data 2 decembrie 2011 13:51:41
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<iostream>
#include<fstream>
using namespace std;
fstream f("dezastru.in",ios::in);
fstream g("dezastru.out",ios::out);

int n,r,st[100];
float p[100],prob=0;

void back(int k)
{
	if(k==r)
	{
		int i;
		float produs=1;
		
		for(i=0; i<r; i++)
			produs=produs*p[st[i]];
		prob=prob+produs;
	}
	else
	{
		if(k>0)
			st[k]=st[k-1];
		else
			st[k]=-1;
		while(st[k]<n-r+k)
		{
			st[k]++;
			back(k+1);
		}
	}
}

long factorial(int x)
{
	long i,prod=1;
	for(i=1; i<=x; i++)
		prod*=i;
	
	return prod;
}


int main()
{
	int i;
	
	f>>n>>r;
	for(i=0; i<n; i++)
		f>>p[i];
	
	
	back(0);
	g<<(prob*2)/float(factorial(n));
	
	f.close(); g.close();
	return 0;
}