Cod sursa(job #2343727)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 14 februarie 2019 11:53:36
Problema Dezastru Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 30;
double v[NMAX];
double dp[NMAX][NMAX];

int main() {
  int n, k;
  freopen("dezastru.in", "r", stdin);
  freopen("dezastru.out", "w", stdout);
  scanf("%d%d", &n, &k);
  for(int i = 1; i <= n; i++) {
    scanf("%lf", &v[i]);
  }
  for(int i = 0; i <= n; i++) {
    dp[i][0] = 1;
  }
  for(int j = 1; j <= k; j++) {
    for(int i = j; i <= n; i++) {
      dp[i][j] = dp[i - 1][j - 1] * v[i] + dp[i - 1][j];
    }
  }
  double sol = dp[n][k];
  for(int i = 1; i <= n; i++) {
    sol /= i;
    if(i <= k) {
      sol *= i;
    }
    if(i <= n - k) {
      sol *= i;
    }
  }
  printf("%lf\n", sol);
  return 0;
}