func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 20;   const double eps = 1e-6;   double p[maxn], ans[maxn], dp[1 << maxn], S[1 << maxn];   int Size[1 << maxn];   bool eq(const double &a, const double &b) { return abs(a - b) <= eps; }   int main() {     int n, k, zerCnt = 0;     bool is0;     scanf( %d %d , &n, &k);     for (int i = (0); i < (n); ++i) {       scanf( %lf , &p[i]);       dp[i] = ans[i] = 0;       Size[i] = 0;       if (eq(p[i], 0)) ++zerCnt;     }     k = min(k, n - zerCnt);     dp[0] = 1;     for (int i = (1); i < (1 << n); ++i) {       for (int j = (0); j < (n); ++j)         if (i & (1 << j)) {           Size[i] = Size[i - (1 << j)] + 1;           S[i] = S[i - (1 << j)] + p[j];         }     }     for (int i = (1); i < (1 << n); ++i) {       if (S[i] > 0) {         for (int j = (0); j < (n); ++j)           if ((i & (1 << j)) && (S[(1 << n) - 1 - i + (1 << j)] > 0))             dp[i] += dp[i - (1 << j)] * p[j] / S[(1 << n) - 1 - i + (1 << j)];         if (Size[i] == k)           for (int j = (0); j < (n); ++j)             if (i & (1 << j)) ans[j] += dp[i];       } else         dp[i] = 0;     }     for (int i = (0); i < (n); ++i) printf( %.8f  , ans[i]);     return 0;   }   