Cod sursa(job #43662)

Utilizator GabiAlb Gabriel Gabi Data 30 martie 2007 12:50:24
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <iomanip>
#define MAX 100
using namespace std;

double a[MAX][MAX];
int c[MAX][MAX];
double p[MAX];
int n, k;

int Comb(int n, int k)
{
    int &ref = c[n][k];
    if (ref) return ref;
    else
    {
        if (!k || !n || n == k) return 1;
        ref = Comb(n-1, k) + Comb(n-1, k-1);
        return ref;
    }    
}

int main()
{
    ifstream fin("dezastru.in");
    ofstream fout("dezastru.out");
    
    fin >> n >> k;
    
    memset(a, 0, sizeof(a));
    
    int sol = Comb(n, k);
      
    for (int i = 1; i <= n; i++)
        fin >> p[i];
    
    for (int i = 0; i <= n; i++) a[i][0] = 1;
    
    for (int i = 1; i <= n; i++)
       for (int j = 1; j <= i; j++)
           a[i][j] = a[i-1][j] + a[i-1][j-1] * p[i];
    
    double t = a[n][k] / (double)sol;
    
    fout << t << setprecision(6) << "\n";
    
    fout.close();
    fin.close();
    return 0;
}