func_code_string: #include <bits/stdc++.h>   using namespace std;   const double SUCK = 999999999999999999.99;   const int MX = 51 * 101;   int n;   int r;   int f[55];   int s[55];   int p[55];   double cp[55];   double dp[55][MX];   bool isOk(double det) {     for (int i = 0; i <= r; i++) {       dp[n][i] = 0;     }     for (int i = n - 1; i >= 0; i--) {       for (int j = 0; j <= r; j++) {         dp[i][j] = det;         double togo = 0;         if (j + f[i] > r) {           togo = det;         } else {           togo += cp[i] * (f[i] + dp[i + 1][j + f[i]]);           if (j + s[i] > r)             togo += (1 - cp[i]) * (s[i] + det);           else             togo += (1 - cp[i]) * (s[i] + dp[i + 1][j + s[i]]);         }         dp[i][j] = min(det, togo);       }     }     if (dp[0][0] >= det) return false;     return true;   }   const double eps = 0.000000001;   time_t bg;   double getTime() {     time_t en = clock();     double ret = (double)(en - bg) / CLOCKS_PER_SEC;     return ret;   }   double bsearch(double l, double r) {     double m = (l + r) / 2;     if (r - l < eps) return m;     if (getTime() >= 1.95) return m;     if (isOk(m))       return bsearch(l, m);     else       return bsearch(m, r);   }   int main() {     bg = clock();     scanf( %d%d , &n, &r);     for (int i = 0; i < n; i++) scanf( %d%d%d , &f[i], &s[i], &p[i]);     for (int i = 0; i < n; i++) cp[i] = 0.010000 * p[i];     double ans = bsearch(n, 50000000);     printf( %.12f , ans);     return 0;   }   