Cod sursa(job #2173324)

Utilizator mouse_wirelessMouse Wireless mouse_wireless Data 15 martie 2018 21:40:14
Problema Dezastru Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

#define SIZE 25

static int n, k, c[SIZE + 1];
static double p[SIZE], sum, prod;

static void comb(int l)
{
  int i;
  double pprev;

  if (l == k) {
    sum += prod;
    prod = 1.0;
  }
  else {
    for (i = c[l] + 1; i + (k - l - 1) <= n; i++) {
      pprev = prod;
      prod *= p[i - 1];
      c[l + 1] = i;
      comb(l + 1);
      prod = pprev;
    }
  }
  /* */
}

int main(void)
{
  int i;

  freopen("dezastru.in", "r", stdin);
  freopen("dezastru.out", "w", stdout);

  scanf("%d %d", &n, &k);

  for (i = 0; i < n; i++) {
    scanf("%lf", &p[i]);
  }

  prod = 1.0;
  comb(0);

  int c = 1;
  for (i = 1; i <= k; i++) {
    c *= n - k + i;
    c /= i;
  }

  sum /= c;

  printf("%lf", sum);

  return 0;
}