func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   const int INF = 0x3f3f3f3f;   const ll LINF = 0x3f3f3f3f3f3f3f3fLL;   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout << setprecision(10) << fixed;     int n, k;     cin >> n >> k;     vector<double> p(n);     for (auto& x : p) cin >> x;     int null = (int)count(begin(p), end(p), 0.0);     if (n - null < k) {       for (int u = 0; u < n; ++u) {         double res = p[u] == 0.0 ? 0.0 : 1.0;         cout << res <<   n ;       }       exit(0);     }     vector<int> popcount(1 << n, 0);     vector<double> sum(1 << n, 0);     for (int u = 0; u < n; ++u) sum[1 << u] = p[u];     for (int mask = 1; mask < (1 << n); ++mask) {       int lsb = mask & -mask;       popcount[mask] = 1 + popcount[mask ^ lsb];       if (mask != lsb) sum[mask] = sum[lsb] + sum[mask ^ lsb];     }     vector<double> dp(1 << n, 0);     dp[0] = 1;     for (int mask = 0; mask < (1 << n); ++mask) {       for (int u = 0; u < n; ++u) {         if ((mask >> u & 1) || p[u] == 0) continue;         int newmask = mask | (1 << u);         dp[newmask] += dp[mask] * p[u] / (1 - sum[mask]);       }     }     for (int u = 0; u < n; ++u) {       double res = 0;       for (int mask = 0; mask < (1 << n); ++mask) {         if (popcount[mask] == k && (mask >> u & 1)) res += dp[mask];       }       cout << res <<   n ;     }     exit(0);   }   