Cod sursa(job #1988970)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 5 iunie 2017 13:35:22
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
ifstream in ("dezastru.in");
ofstream out ("dezastru.out");
int n , k;
int const nmax = 25;
double p[5 + nmax];
double C[5 + nmax][5 + nmax];
double x[5 + nmax][5 + nmax];

void computecomb(){
  for(int i = 0 ; i <= n ;i++){
    C[i][0] = 1;
  }
  for(int i = 1 ; i <= n ;i++){
    for(int j = 1 ; j <= k ;j++){
      C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
    }
  }
  //cout<<C[3][2];
}

void computex(){
  for(int i = 1 ; i <= n ;i++){
    x[i - 1][0] = 1;
  }

  for(int i = 1 ; i <= n ;i++){
    for(int j = 1 ; j <= k ;j++){
      x[i][j] = x[i - 1][j] + x[i - 1][j - 1] * p[i];
    }
  }
}
int main()
{
  in>>n>>k;
  for(int i = 1 ; i <= n ;i++){
    in>>p[i];
  }
  computecomb();
  computex();
  out<<setprecision(6)<<fixed<<x[n][k] / C[n][k];
  return 0;
}