Cod sursa(job #1142045)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 13 martie 2014 13:57:52
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
/// Craciun Catalin
///  Dezastru
///   www.infoarena.ro/problema/dezastru
#include <fstream>
#include <iostream>
#include <iomanip>

#define NMax 30

using namespace std;

ifstream f("dezastru.in");
ofstream g("dezastru.out");

short n,k;
double A[NMax];
double AR[NMax][NMax]; /// Aranjamente
double CO[NMax][NMax]; /// Combinari

int main()
{
	f>>n>>k;
	for (short i=1;i<=n;i++)
		f>>A[i];
	f.close();
	
	/// Initializez combinarile si aranjamentele, din cunostiinte de matematica, C de n luate cate 0 = 1, la fel pentru aranjamente
	for (short i=0;i<=29;i++)
		AR[i][0]=CO[i][0]=1.0;
	
	for (int i = 1; i <= n; ++i) 
    {
        for (int j = 1; j <= k; ++j)
        {
            AR[i][j]=AR[i-1][j]+AR[i-1][j-1]*A[i];
            CO[i][j]=CO[i-1][j]+CO[i-1][j-1];
        }
    }
	
	g<<fixed<<setprecision(6)<<AR[n][k]/CO[n][k];
	g.close();
	
	return 0;
}