#include <bits/stdc++.h>
using namespace std;
using ll = int;
template <typename T>
using v = vector<T>;
const double EPS = 1e-12;
int main(int argc, char const *argv[]) {
  ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  ll n, k;
  cin >> n >> k;
  v<double> prob(n);
  for (ll i = 0; i < n; i++) {
    cin >> prob[i];
  }
  v<double> p(n - 1);
  const ll mask = (1 << (n - 1)) - 1;
  v<double> a(1 << (n - 1));
  for (ll curvideo = 0; curvideo < n; curvideo++) {
    double pcur = prob[curvideo];
    if (pcur < EPS) {
      cout << 0.0 << " ";
    } else if (pcur > 1.0 - EPS) {
      cout << 1.0 << " ";
    } else {
      for (ll i = 0, idx = 0; i < n; i++) {
        if (i != curvideo) {
          p[idx] = prob[i];
          idx++;
        }
      }
      fill(a.begin(), a.end(), 0);
      a[0] = pcur;
      for (ll s = 1; s <= mask; s++) {
        double sump = 0.0;
        for (ll vid = 0; vid < n - 1; vid++) {
          if ((s >> vid) & 1) {
            a[s] += p[vid] * a[s & (~(1 << vid))];
            sump += p[vid];
          }
        }
        a[s] /= (1 - sump);
      }
      double res = 0;
      for (ll s = mask; s >= 0; s--) {
        if (__builtin_popcount(s) < k) {
          res += a[s];
        }
      }
      cout << setprecision(numeric_limits<double>::digits10) << res << " ";
    }
  }
  cout << "\n";
  return 0;
}
