func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 3e5;   int n, ans;   int Dpos[N + 3];   char str[N + 10], Nstr[N + 10];   int main() {     scanf( %d%s , &n, str + 1);     int Ncnt = 0, Ned = n, Nmin = 0;     for (int i = 1; i <= n; i++) {       if (str[i] ==  ( )         Ncnt++;       else         Ncnt--;       if (Nmin > Ncnt) {         Nmin = Ncnt;         Ned = i;       }     }     if (Ncnt) printf( 0 n1 1 n ), exit(0);     int Npos = 1;     for (int i = Ned + 1; i <= n; i++) Dpos[Npos] = i, Nstr[Npos++] = str[i];     for (int i = 1; i <= Ned; i++) Dpos[Npos] = i, Nstr[Npos++] = str[i];     for (int i = 1, Icnt = 0; i <= n; i++) {       if (Nstr[i] ==  ( )         Icnt++;       else         Icnt--;       if (!Icnt) ans++;     }     int fans = ans;     int ansl = 1, ansr = 1;     for (int i = 1; i <= n;) {       int Pcnt = 0;       int j;       for (j = i; j <= n; j++) {         if (Nstr[j] ==  ( )           Pcnt++;         else           Pcnt--;         if (!Pcnt) break;       }       vector<pair<int, int> > vec;       Pcnt = 0;       int Ptot = 0;       for (int k = i + 1; k < j; k++) {         if (Nstr[k] ==  ( )           Pcnt++;         else           Pcnt--;         if (Pcnt == 0) {           if (vec.empty())             vec.push_back(make_pair(i + 1, k));           else             vec.push_back(make_pair(vec.back().second + 1, k));         }       }       for (auto it : vec) {         int L = it.first, R = it.second;         int Kcnt = 0, Ktot = 0;         for (int k = L + 1; k <= R - 1; k++) {           if (Nstr[k] ==  ( )             Kcnt++;           else             Kcnt--;           if (!Kcnt) Ktot++;         }         if (ans < fans - 1 + 2 + Ktot) {           ans = fans - 1 + 2 + Ktot;           ansl = L;           ansr = R;         }       }       Ptot = vec.size();       if (ans < Ptot + 1) {         ans = Ptot + 1;         ansl = i;         ansr = j;       }       i = j + 1;     }     ansl = Dpos[ansl];     ansr = Dpos[ansr];     if (ansl > ansr) swap(ansl, ansr);     printf( %d n%d %d n , ans, ansl, ansr);     return 0;   }   