func_code_string: #include <bits/stdc++.h>   using namespace std;   string s;   pair<int, int> st[3000002];   void build(int v, int l, int r) {     if (l == r) {       st[v] = make_pair(s[l] ==  ( , s[l] ==  ) );       return;     }     int lv, rv, mid;     lv = 2 * v;     rv = 2 * v + 1;     mid = (l + r) / 2;     build(lv, l, mid);     build(rv, mid + 1, r);     st[v].first = st[rv].first + max(0, st[lv].first - st[rv].second);     st[v].second = st[lv].second + max(0, st[rv].second - st[lv].first);   }   pair<int, int> query(int v, int l, int r, int L, int R) {     if (r < L || R < l) return make_pair(0, 0);     if (L <= l && r <= R) return st[v];     pair<int, int> L1 = query(2 * v, l, (l + r) / 2, L, R);     pair<int, int> R1 = query(2 * v + 1, (l + r) / 2 + 1, r, L, R);     return make_pair(R1.first + max(0, L1.first - R1.second),                      L1.second + max(0, R1.second - L1.first));   }   int main() {     cin >> s;     int n = s.length();     build(1, 0, n - 1);     int m;     cin >> m;     for (int i = 0; i < m; ++i) {       int l, r;       cin >> l >> r;       l--;       r--;       pair<int, int> q = query(1, 0, n - 1, l, r);       cout << r - l + 1 - (q.first + q.second) <<   n ;     }     return 0;   }   