func_code_string: #include <bits/stdc++.h>   int n, m, f, c[150005], p, a, b;   long long A;   struct odp {     long long L, M, R, S;     odp() {}     odp(long long L, long long M, long long R, long long S)         : L(L), M(M), R(R), S(S) {}   } t[150005 * 4];   void init(int n, int l, int r) {     if (l == r)       t[n].L = t[n].R = t[n].M = ((t[n].S = c[l]) > (0) ? (t[n].S = c[l]) : (0));     else {       int L = n * 2, R = L + 1, c = l + r >> 1;       init(L, l, c);       init(R, c + 1, r);       t[n].S = t[L].S + t[R].S;       t[n].L = ((t[L].L) > (t[L].S + t[R].L) ? (t[L].L) : (t[L].S + t[R].L));       t[n].R = ((t[R].R) > (t[L].R + t[R].S) ? (t[R].R) : (t[L].R + t[R].S));       t[n].M =           ((t[L].M) >                    (((t[R].M) > (t[L].R + t[R].L) ? (t[R].M) : (t[L].R + t[R].L)))                ? (t[L].M)                : (((t[R].M) > (t[L].R + t[R].L) ? (t[R].M) : (t[L].R + t[R].L))));     }   }   odp q(int n, int l, int r) {     if (l >= a && r <= b) return odp(t[n].L, t[n].M, t[n].R, t[n].S);     int c = l + r >> 1;     if (c >= b) return q(n * 2, l, c);     if (c < a) return q(n * 2 + 1, c + 1, r);     odp L = q(n * 2, l, c), R = q(n * 2 + 1, c + 1, r);     return odp(((L.L) > (L.S + R.L) ? (L.L) : (L.S + R.L)),                ((L.M) > (((R.M) > (L.R + R.L) ? (R.M) : (L.R + R.L)))                     ? (L.M)                     : (((R.M) > (L.R + R.L) ? (R.M) : (L.R + R.L)))),                ((R.R) > (L.R + R.S) ? (R.R) : (L.R + R.S)), L.S + R.S);   }   int main() {     scanf( %d %d %d , &n, &m, &f);     for (int i = 1; i <= n; i++)       scanf( %d , &c[i]), c[i - 1] = (c[i] - c[i - 1]) * 50;     for (int i = 1; i < n; i++) scanf( %d , &p), c[i] -= p * f;     init(1, 1, n - 1);     while (m--) {       scanf( %d %d , &a, &b);       b--;       A += q(1, 1, n - 1).M;     }     printf( %.8lf n , A * 0.01);   }   