Cod sursa(job #1822506)

Utilizator TincaMateiTinca Matei TincaMatei Data 5 decembrie 2016 00:17:00
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

double factorial(int n) {
  double rez;
  rez = 1.0f;
  for(int i = 2; i <= n; ++i)
    rez = rez * i;
  return rez;
}

const int MAX_N = 25;
double v[1+MAX_N];
double d[1+MAX_N][1+MAX_N];

int main() {
  int n, k;
  double comb;
  FILE *fin = fopen("dezastru.in", "r");
  fscanf(fin, "%d%d", &n, &k);
  for(int i = 1; i <= n; ++i)
    fscanf(fin, "%lf", &v[i]);
  fclose(fin);

  comb = factorial(n) / factorial(k) / factorial(n - k);
  for(int i = 0; i <= n; ++i)
    d[i][0] = 1.0f;

  for(int i = 1; i <= n; ++i)
    for(int j = 1; j <= k; ++j)
      d[i][j] = d[i - 1][j] + d[i - 1][j - 1] * v[i];

  FILE *fout = fopen("dezastru.out", "w");
  fprintf(fout, "%lf", d[n][k] / comb);
  fclose(fout);
  return 0;
}