func_code_string: #include <bits/stdc++.h>   using namespace std;   double f[4][207][207];   struct node {     int x, y;   };   node a[207];   bool cmp(const node& x, const node& y) { return x.y > y.y; }   int n, m, bm;   int main() {     while (scanf( %d %d %d , &n, &m, &bm) != EOF) {       int i, j, k, r, w;       int sum = 0;       memset(f, 0, sizeof(f));       sum = bm;       for (i = 1; i <= n; i++) {         scanf( %d  , &a[i].x);       }       for (i = 1; i <= n; i++) scanf( %d , &a[i].y);       sort(a + 1, a + n + 1, cmp);       double ans = 0;       memset(f, 0, sizeof(f));       f[0][0][bm] = 1;       for (i = 0; i < n; i++) {         w = (i + 1) & 1;         r = (i)&1;         memset(f[w], 0, sizeof(f[w]));         for (j = 0; j <= i; j++)           for (k = 0; k <= 200; k++) {             int h = k + a[i + 1].y;             if (h < 0) continue;             if (h > 200) h = 200;             f[w][j + 1][h] += f[r][j][k] * (double)a[i + 1].x / 100;           }         for (j = 0; j <= i; j++)           for (k = 0; k <= 200; k++) {             int h = k + a[i].y;             f[w][j][k] += f[r][j][k] * (1 - (double)a[i + 1].x / 100);           }       }       w = n & 1;       for (j = m; j <= n; j++)         for (k = 0; k <= 200; k++) ans += f[w][j][k];       printf( %f n , ans);     }     return 0;   }   