func_code_string: #include <bits/stdc++.h>   using namespace std;   const double pi = acos(-1.0);   const double eps = 1e-8;   const int INF = 1E9;   const int MAXN = 11111;   int n, maxc;   int l[MAXN], r[MAXN], b[MAXN];   int _less[MAXN];   int id[MAXN], mx;   double ans, dp[11][MAXN], sum[11][MAXN];   double p[11];   int main() {     cin >> n;     for (int i = 0; i < (int)(n); i++) {       cin >> l[i] >> r[i];       p[i] = 1.0 / (r[i] - l[i] + 1);     }     for (int i = 0; i < (int)(n); i++) id[i] = i;     ans = 0;     while (true) {       maxc = 1 << (n - 1);       for (int mask = 0; mask < (int)(maxc); mask++) {         for (int i = 0; i < (int)(n - 1); i++) _less[i] = (mask >> i) & 1;         bool ok = 1;         for (int i = 0; i < (int)(n - 1); i++)           if (_less[i] == 1 && id[i] > id[i + 1]) {             ok = 0;             break;           }         if (!ok) continue;         memset(dp, 0, sizeof(dp));         for (int i = l[id[n - 2]]; i <= r[id[n - 2]]; i++) {           dp[n - 2][i] = 1.0 * i;           if (_less[n - 2])             dp[n - 2][i] *= (l[id[n - 1]] <= i && i <= r[id[n - 1]] ? 1 : 0);           else             dp[n - 2][i] *= (i + 1 <= r[id[n - 1]]                                  ? (r[id[n - 1]] - max(l[id[n - 1]], i + 1) + 1)                                  : 0);         }         mx = r[id[n - 2]];         sum[n - 2][MAXN - 1] = dp[n - 2][MAXN - 1];         for (int i = (int)(MAXN - 1) - 1; i >= 0; i--)           sum[n - 2][i] = sum[n - 2][i + 1] + dp[n - 2][i];         for (int i = n - 3; i >= 0; i--) {           for (int j = l[id[i]]; j <= r[id[i]]; j++) {             if (_less[i])               dp[i][j] = dp[i + 1][j];             else {               dp[i][j] = sum[i + 1][j + 1];             }           }           sum[i][MAXN - 1] = dp[i][MAXN - 1];           for (int j = (int)(MAXN - 1) - 1; j >= 0; j--)             sum[i][j] = sum[i][j + 1] + dp[i][j];         }         ans += sum[0][0];       }       if (!next_permutation(id, id + n)) break;     }     cout.precision(40);     for (int i = 0; i < (int)(n); i++) ans *= p[i];     cout << ans;     return 0;   }   