#include <bits/stdc++.h>
using namespace std;
const int N = 22;
int n, k;
long double p[N];
long double dp[1 << N];
long double sp[1 << N];
long double ans[1 << N];
int cnt[1 << N];
int s0 = 0;
void Init() {
  scanf("%d %d", &n, &k);
  for (int i = 0; i < n; i++) {
    double x;
    scanf("%lf", &x);
    p[i] = x;
    if (x > 0.0) s0++;
  }
}
void Work() {
  if (s0 <= k) {
    for (int i = 0; i < n; i++) {
      if (p[i] > 0.0) p[i] = 1.0;
      double x = p[i];
      printf("%.10f%c", x, i == n ? '\n' : ' ');
    }
    return;
  }
  int r = (1 << n);
  for (int i = 1; i < r; i++) {
    dp[i] = 0.0;
    for (int j = 0; j < n; j++)
      if (i & (1 << j)) {
        int pre = i ^ (1 << j);
        sp[i] = sp[pre] + p[j];
        cnt[i] = cnt[pre] + 1;
        break;
      }
  }
  for (int i = 1; i < r; i++)
    if (cnt[i] <= k) {
      if (cnt[i] == 1) {
        dp[i] = sp[i];
      } else {
        for (int j = 0; j < n; j++)
          if (i & (1 << j)) {
            int nxt = i ^ (1 << j);
            if (fabs(sp[nxt] - 1.0) > 1e-15)
              dp[i] += p[j] * dp[nxt] / (1.0 - sp[nxt]);
          }
      }
      if (cnt[i] == k) {
        for (int j = 0; j < n; j++) {
          if (i & (1 << j)) {
            ans[j] += dp[i];
          }
        }
      }
    }
  for (int i = 0; i < n; i++) {
    double x = ans[i];
    printf("%.10f%c", x, i == n ? '\n' : ' ');
  }
}
int main() {
  Init();
  Work();
  return 0;
}
