#include <bits/stdc++.h>
using namespace std;
int n, m, k, pos[20], bad[20];
double p[20], ans[20], dp[(1 << 20) + 5];
int main() {
  scanf("%d%d", &m, &k);
  for (int i = 0; i < m; i++) {
    double x;
    scanf("%lf", &x);
    if (fabs(x) > 1e-12) {
      pos[n] = i;
      p[n++] = x;
    } else
      bad[i] = 1;
  }
  dp[0] = 1.0;
  k = min(k, n);
  for (int mask = 0; mask < (1 << n); mask++) {
    double s = 0;
    for (int i = 0; i < n; i++) {
      if (mask & 1 << i) s += p[i];
    }
    if (fabs(s - 1.0) < 1e-12) continue;
    for (int i = 0; i < n; i++)
      if ((mask & 1 << i) == 0)
        dp[mask | (1 << i)] += dp[mask] * p[i] / (1.0 - s);
  }
  for (int mask = 0; mask < (1 << n); mask++) {
    if (__builtin_popcount(mask) != k) continue;
    for (int i = 0; i < n; i++)
      if (mask & 1 << i) ans[pos[i]] += dp[mask];
  }
  for (int i = 0; i < m; i++) {
    if (bad[i])
      printf("%.10lf", 0.0);
    else
      printf("%.10lf", ans[i]);
    printf(i == m - 1 ? "\n" : " ");
  }
  return 0;
}
