Cod sursa(job #2147813)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 1 martie 2018 00:23:53
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

#define MAXN 25

double p[MAXN + 1], d[MAXN + 1][MAXN + 1];

int main() {
  FILE *fin, *fout;
  int n, k;
  double f1, f2, f3;
  fin = fopen("dezastru.in", "r");
  fscanf(fin, "%d%d", &n, &k);
  for (int i = 1; i <= n; ++i) {
    fscanf(fin, "%lf", &p[i]);
  }
  fclose(fin);
  for (int i = 0; i < n; ++i) {
    d[i][0] = 1;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= k; ++j) {
      d[i][j] = d[i - 1][j] + p[i] * d[i - 1][j - 1];
    }
  }
  f1 = 1;
  for (int i = 1; i <= n; ++i) {
    f1 = i * f1;
  }
  f2 = 1;
  for (int i = 1; i <= k; ++i) {
    f2 = i * f2;
  }
  f3 = 1;
  for (int i = 1; i <= n - k; ++i) {
    f3 = i * f3;
  }
  fout = fopen("dezastru.out", "w");
  fprintf(fout, "%.6lf\n", d[n][k] / (f1 / (f2 * f3)));
  fclose(fout);
  return 0;
}