func_code_string: #include <bits/stdc++.h>   using namespace std;   struct sgmnt {     long long L, R;     int mxL, mxR, w;     sgmnt() {}     sgmnt(long long L, int mxL, long long R, int mxR, int w)         : L(L), mxL(mxL), R(R), mxR(mxR), w(w) {}   };   const int MAXN = 3 * 1000 * 100 + 10;   long long arr[MAXN];   sgmnt seg[MAXN * 4];   sgmnt merge(sgmnt a, sgmnt b, int s, int m, int e) {     sgmnt c = sgmnt(a.L, a.mxL, b.R, b.mxR, max(a.w, b.w));     if ((a.R > 0 && b.L != 0) || (a.R < 0 && b.L < 0)) {       if (a.mxL == m - s) c.mxL = a.mxL + b.mxL;       if (b.mxR == e - m) c.mxR = b.mxR + a.mxR;       c.w = max(c.w, a.mxR + b.mxL);     }     c.w = max({c.w, c.mxR, c.mxL});     return c;   }   void add(int p, int v, int s, int e) {     if (e - s <= 1) {       seg[v] = sgmnt(arr[s], 1, arr[s], 1, 1);       return;     }     int m = (s + e) / 2;     if (p < m)       add(p, v * 2, s, m);     else       add(p, v * 2 + 1, m, e);     seg[v] = merge(seg[v * 2], seg[v * 2 + 1], s, m, e);   }   int main() {     int n, b;     scanf( %d %d , &n, &b);     n--;     for (int i = 0; i < n; i++) {       int a;       scanf( %d , &a);       arr[i] = a - b;       add(i, 1, 0, n);       b = a;     }     int q;     scanf( %d , &q);     while (q--) {       int l, r, d;       scanf( %d %d %d , &l, &r, &d);       l--;       if (!n) {         cout << 1 << endl;         continue;       }       if (l != 0) {         arr[l - 1] += d;         add(l - 1, 1, 0, n);       }       if (r != n + 1) {         arr[r - 1] -= d;         add(r - 1, 1, 0, n);       }       printf( %d n , seg[1].w + 1);     }     return 0;   }   