#include <bits/stdc++.h>
const int inf = 1 << 30;
const double eps = 1e-50;
const long long llinf = 1ll << 60;
using namespace std;
const int MAXN = 22;
const int MAXS = (1 << 20);
int n, k;
double p[MAXN];
double a[MAXS], b[MAXS];
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%lf", &p[i]);
  a[0] = 1;
  b[0] = 0;
  for (int s = 0; s < (1 << (n)); s++) {
    for (int i = 0; i <= n - 1; i++) {
      if (s & (1 << (i))) {
        b[s] = b[s ^ (1 << (i))] + p[i + 1];
        break;
      }
    }
  }
  for (int s = 0; s < (1 << (n)); s++) {
    for (int i = 0; i < n; i++) {
      if (s & (1 << (i))) {
        a[s] += a[s ^ (1 << (i))] * p[i + 1] / (1 - b[s] + eps);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    double res = 0;
    for (int s = 0; s <= (1 << n) - 1; s++) {
      if (__builtin_popcount(s) > k - 1) continue;
      if (s & (1 << (i - 1))) continue;
      if (p[i]) res += p[i] * a[s];
    }
    printf("%.16lf ", res);
  }
  return 0;
}
