func_code_string: #include <bits/stdc++.h>   using namespace std;   double r, L;   double b, u, A;   double x, y, a;   double D[95], B[95];   struct st {     double x, y, a;   };   st bear[50];   int t;   double fun(int i, double l) {     x = bear[i].x;     y = bear[i].y;     t = bear[i].a;     a = B[t];     b = (fabs(l - x) / y);     A = D[t];     if (x < l)       u = ((A + b) / (1 - A * b)) * y - l + x;     else {       if (a < b)         u = x - l - ((b - A) / (1 + b * A)) * y;       else         u = ((A - b) / (1 + A * b)) * y + x - l;     }     if (u < 0) return 1e9;     return u;   }   const int N = (1 << 20) + 10;   double d[N][22];   int main() {     for (int i = 1; i <= 90; i++) {       B[i] = i * acosl(-1) / 180;       D[i] = tan(B[i]);     }     double l;     int n;     cin >> n >> l >> r;     L = l;     for (int i = 0; i < n; i++) cin >> bear[i].x >> bear[i].y >> bear[i].a;     int m = (1 << n) - 1, i, j, k;     double ans = -1e9;     for (i = 1; i <= m; i++) {       for (j = 0; j < n; j++) {         if (((1 << j) & i)) {           d[i][j] = -1e9;           if ((1 << j) == i) {             d[i][j] = l + fun(j, l);             ans = max(ans, d[i][j]);           } else {             for (k = 0; k < n; k++) {               if (((1 << k) & i) && j != k) {                 d[i][j] =                     max(d[i][j], d[i ^ (1 << j)][k] + fun(j, d[i ^ (1 << j)][k]));                 ans = max(ans, d[i][j]);               }             }           }         }       }     }     printf( %.6f , min(ans - L, r - L));   }   