func_code_string: #include <bits/stdc++.h>   double ans, f[10][1000];   int n, k, a, v[10], p[10], g[10], ki[10], l[10];   void calc() {     int b = a;     for (int i = 1; i <= n; ++i) {       l[i] = p[i] + g[i];       if (l[i] > 100) l[i] = 100;     }     f[0][0] = 1;     for (int i = 1; i <= n; ++i)       for (int j = 0; j <= (1 << i - 1) - 1; ++j) {         f[i][j] = f[i - 1][j] * (100 - l[i]) / 100;         f[i][j + (1 << i - 1)] = f[i - 1][j] * l[i] / 100;       }     double res = 0;     for (int i = 0; i <= (1 << n) - 1; ++i) {       int tot = 0, b = a;       for (int j = 1; j <= n; ++j)         if (i & (1 << j - 1))           ++tot;         else           b += v[j];       if (tot * 2 > n)         res += f[n][i];       else         res += f[n][i] * a / b;     }     if (res > ans) ans = res;   }   void dfs(int now, int left) {     if (now == n + 1) {       calc();       return;     }     if (left == 0)       dfs(now + 1, 0);     else {       for (int i = 0; i <= left; ++i) {         if (p[now] + i * 10 >= 110) break;         g[now] = i * 10;         dfs(now + 1, left - i);         g[now] = 0;       }     }   }   int main() {     scanf( %d%d%d , &n, &k, &a);     for (int i = 1; i <= n; ++i) scanf( %d%d , &v[i], &p[i]);     dfs(1, k);     printf( %.6lf n , ans);     return 0;   }   