func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, k, a, lev[16], loy[16], suf;   double ret;   double dp[16][(2 << 8)];   double calc(int pos, int mask) {     if (pos == n) {       int need = suf - __builtin_popcount(mask);       if (need <= 0)         return 1.0;       else {         int b = 0;         for (int i = 0; i < (n); ++i)           if (!((mask & (1LL << i)) != 0LL)) b += lev[i];         return double(a) / double(a + b);       }     }     double &ret = dp[pos][mask];     if (ret != -1) return ret;     ret = calc(pos + 1, mask) * double(100.0 - loy[pos]) / 100.0 +           calc(pos + 1, mask + (1 << pos)) * double(loy[pos]) / 100.0;     return ret;   }   int llamadas = 0;   double calcprob() {     fill(&dp[0][0], &dp[16][0], -1.0);     llamadas++;     return calc(0, 0);   }   void simu(int pos, int candy) {     if (pos == n) {       ret = max(ret, calcprob());       return;     }     int minus = 0;     simu(pos + 1, candy);     for (int i = 0; i < (candy); ++i) {       if (loy[pos] == 100) break;       minus++;       loy[pos] += 10;       simu(pos + 1, candy - i - 1);     }     loy[pos] -= minus * 10;   }   int main() {     cin >> n >> k >> a;     for (int i = 0; i < (n); ++i) cin >> lev[i] >> loy[i];     suf = n / 2 + 1;     ret = 0.0;     simu(0, k);     printf( %.10f n , ret);     return 0;   }   