#include <bits/stdc++.h>
using namespace std;
void readStrn(char a[], int n) {
  for (register long i = 0; i < n; i++) a[i] = getchar();
  getchar();
}
void readStr(char a[], int &n) {
  n = 0;
  for (register char c = getchar(); c >= '0' && c <= '9'; c = getchar())
    a[n++] = c;
}
long long readLI() {
  register char c;
  for (c = getchar(); !(c >= '0' && c <= '9'); c = getchar())
    ;
  register long long a = c - '0';
  for (c = getchar(); c >= '0' && c <= '9'; c = getchar())
    a = (a << 3) + (a << 1) + c - '0';
  return a;
}
long double a[20], ans[20], dp[1 << 20];
int main() {
  int n = readLI();
  int k = readLI();
  int c = 0;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    ans[i] = 0;
    if (a[i] < 1e-6) c++;
  }
  k = min(k, n - c);
  dp[0] = 1;
  for (int i = 1; i < (1 << n); i++) {
    long double pr = 1;
    c = 0;
    for (int j = 0; j < n; j++)
      if (i & (1 << j)) {
        pr -= a[j];
        c++;
      }
    if (c > k) continue;
    for (int j = 0; j < n; j++) {
      if (a[j] < 1e-6) continue;
      if (i & (1 << j)) {
        dp[i] += dp[i ^ (1 << j)] * a[j] / (pr + a[j]);
        ans[j] += dp[i ^ (1 << j)] * a[j] / (pr + a[j]);
      }
    }
  }
  cout << fixed << setprecision(10);
  for (int i = 0; i < n; i++) cout << ans[i] << ' ';
  return 0;
}
