Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- //#define debug(...) printf( __VA_ARGS__ )
- #define debug(...) /****nothing****/
- #define ll long long
- #define ull unsigned long long
- #define pb push_back
- #define mem(arr,val) memset(arr,val,sizeof(arr))
- #define mp make_pair
- #define pii pair<int,int>
- #define F first
- #define S second
- #define sz(x) (int)(x).size()
- #define nopos string::npos
- #define fr(i,a,b) for(i=a;i<=b;i++)
- #define frn(i,a,b) for(i=a;i>=b;i--)
- string s;
- int i,j,fi,la,sum,mx=0,t;
- vector<pair<int,int> > vct;
- stack<int> stk;
- int main()
- {
- //freopen("d://i.txt","r",stdin);
- //freopen("d://o.txt","w",stdout);
- cin>>t;
- while(t--)
- {
- cin>>s;
- fi=la=0;
- mx=0;
- for(i=0;i<s.size();i++)
- {
- if(s[i]=='(')
- {
- stk.push(i);
- vct.pb(make_pair(fi,la));
- }
- else
- {
- if(!stk.empty())
- fi=stk.top() , la=i , stk.pop();
- else
- {
- vct.pb(make_pair(fi,la));
- }
- }
- }
- vct.pb(make_pair(fi,la) );
- sum=0;
- for(i=1;i<vct.size();i++)
- {
- if(vct[i]==vct[i-1])
- continue;
- if(vct[i].first==vct[i-1].second+1)
- sum+=vct[i].second-vct[i].first+1;
- else
- {
- mx=max(mx,sum);
- sum=vct[i].second-vct[i].first+1;
- }
- }
- mx=max(mx,sum);
- cout<<mx<<'\n';
- while(!stk.empty())
- stk.pop();
- vct.clear();
- }
- return 0;
- }
- /*
- 122
- ()((()))(((
- ()()
- {[)}(){[]}[)(())(())
- {(()))(((())))
- {(())(())[
- {](())
- */
Advertisement
Add Comment
Please, Sign In to add comment