题干:
题解:
#include<bits/stdc++.h>
#include<stack>
#define MAX 100005
using namespace std;
string a;
int ans;
stack<int>l;
int cnt=0;
int main( )
{
cin>>a;
for(int i=0;i<a.length();i++)
{
if(a[i]=='a')
{
cnt++;
}
else if(a[i]=='(')
{
l.push(cnt);
cout<<cnt<<endl;
cnt=0;
l.push(-1);
}
else if(a[i]=='|')
{
l.push(cnt);
cout<<cnt<<endl;
cnt=0;
l.push(-2);
}
else if(a[i]==')')
{
l.push(cnt);
cout<<cnt<<endl;
ans=0,cnt=0;
while(!l.empty())
{
int x=l.top();
l.pop();
if(x>0)
{
cnt+=x;
}
else if(x==-2)
{
ans=max(ans,cnt);
cout<<cnt<<" 2"<<endl;
cnt=0;
}
else if(x==-1)
{
ans=max(ans,cnt);
cout<<cnt<<" 1"<<endl;
break;
}
}
l.push(ans);
cnt=0;
}
}
l.push(cnt);
ans=0,cnt=0;
while(!l.empty())
{
int x=l.top();
l.pop();
if(x>0)
{
cnt+=x;
}
else if(x==-2)
{
ans=max(ans,cnt);
cnt=0;
}
}
// ans=max(ans,cnt);
cout<<ans;
return 0;
}