func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T1, typename T2>   inline T1 max(T1 a, T2 b) {     return a < b ? b : a;   }   template <typename T1, typename T2>   inline T1 min(T1 a, T2 b) {     return a < b ? a : b;   }   const char lf =   n ;   namespace ae86 {   const int bufl = 1 << 15;   char buf[bufl], *s = buf, *t = buf;   inline int fetch() {     if (s == t) {       t = (s = buf) + fread(buf, 1, bufl, stdin);       if (s == t) return EOF;     }     return *s++;   }   inline int ty() {     int a = 0;     int b = 1, c = fetch();     while (!isdigit(c)) b ^= c ==  - , c = fetch();     while (isdigit(c)) a = a * 10 + c - 48, c = fetch();     return b ? a : -a;   }   inline double td() {     double a = 0, d = 0.1;     int b = 1, c = fetch();     while (!isdigit(c)) b ^= c ==  - , c = fetch();     while (isdigit(c)) a = a * 10 + c - 48, c = fetch();     if (c !=  . ) return b ? a : -a;     while (c = fetch(), isdigit(c)) a += d * (c - 48), d *= 0.1;     return b ? a : -a;   }   }  // namespace ae86   using ae86::td;   using ae86::ty;   const int _ = 23, __ = 1 << 20;   int n, nn, lim, bcnt[__] = {0};   double ps[_], sps[__] = {0}, f[__] = {0}, ans[_] = {0};   int main() {     ios::sync_with_stdio(0), cout.tie(nullptr);     n = ty(), nn = 1 << n, lim = ty();     int cnts = 0;     for (int i = 0; i < n; i++) ps[i] = td(), cnts += ps[i] > 0;     if (cnts < lim) {       for (int i = 0; i < n; i++) cout <<  01 [ps[i] > 0] <<    n [i == n - 1];       return 0;     }     for (int i = 0; i < nn; i++)       for (int j = 0; j < n; j++)         if ((((i) >> (j)) & 1)) sps[i] += ps[j];     bcnt[0] = 0;     for (int i = 1; i < nn; i++) bcnt[i] = bcnt[i >> 1] + (i & 1);     f[0] = 1;     for (int i = 0; i < nn; i++) {       if (bcnt[i] == lim)         for (int j = 0; j < n; j++)           if ((((i) >> (j)) & 1)) ans[j] += f[i];       if (bcnt[i] >= lim) continue;       for (int j = 0; j < n; j++)         if (!(((i) >> (j)) & 1)) f[i | (1 << (j))] += f[i] * ps[j] / (1 - sps[i]);     }     for (int i = 0; i < n; i++)       cout << setprecision(11) << fixed << ans[i] <<    n [i == n - 1];     return 0;   }   