TawratNibir

Untitled

Jan 18th, 2026
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5. const int M = 1e9+7;
  6. const int N = 1e7+5;
  7.  
  8. int main() {
  9.     int t;
  10.     cin >> t;
  11.     while (t--) {
  12.         int n;
  13.         cin >> n;
  14.         string s;
  15.         cin >> s;
  16.         string p;
  17.         for(auto c:s){
  18.             if(c=='(') p+='l';
  19.             else p+='r';
  20.         }
  21.         vector<int> suf(n);
  22.         int cnt = 0;
  23.         for (int i = n-1; i >=0; --i)
  24.         {
  25.             if(p[i]=='r'){
  26.                 cnt++;
  27.             }
  28.             suf[i]=cnt;
  29.         }
  30.         std::vector<int> lPos;
  31.         for (int i = 0; i < n; ++i)
  32.         {
  33.             if(p[i]=='l') lPos.push_back(i);
  34.         }
  35.         int lCnt = 0, mainCnt=0;
  36.         int maxi = INT_MIN;
  37.         for (int i = 0; i < n; ++i)
  38.         {
  39.             if(p[i]=='l'){
  40.                 lCnt++;
  41.                 mainCnt++;
  42.             }
  43.             else {
  44.                 int l_position = lPos[mainCnt-1]+1;
  45.                 if(l_position<n){
  46.                     int r_cnt = suf[l_position];
  47.                     if(r_cnt>=lCnt){
  48.                         maxi = max(maxi , 2*lCnt);
  49.                     }
  50.                     else lCnt--;
  51.                 }
  52.             }
  53.         }
  54.         if(maxi==INT_MIN){
  55.             cout << -1 << '\n';
  56.         }
  57.         else cout << maxi << "\n";
  58.     }
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment