这是一个几万年前的代码,不会调了,越来越菜了
#include<bits/stdc++.h>
using namespace std;
#define GCC optimize(2)
int n;
char ys[1000005];
bool pd=1,zhi=1;
void ans1()
{
stack<bool>q;
bool pd=0;
int r=0;
for(int i=0;i<n;i++)
if(ys[i]=='1')
pd=1;
bool g=1;
bool a=0;
for(int i=0;i<n;i++)
{
if(g==1){
if(ys[i]=='|'&&(ys[i-1]=='1'||a==1))
{
g=0;
r++;
a=1;
}
}
else
{
if(ys[i]=='(')
q.push(1);
if(ys[i]==')')
q.pop();
if(q.empty())
g=1;
}
}
cout<<pd<<endl<<0<<" "<<r;
}
void ans2()
{
stack<bool>q;
bool pd=1;
int r=0;
for(int i=0;i<n;i++)
if(ys[i]=='0')
pd=0;
bool g=1;
bool a=0;
for(int i=0;i<n;i++)
{
if(g==1)
{
if(ys[i]=='&'&&(ys[i-1]=='0'||a==1))
{
g=0;
r++;
a=1;
}
}
else
{
if(ys[i]=='(')
q.push(1);
if(ys[i]==')')
q.pop();
if(q.empty())
g=1;
}
}
cout<<pd<<endl<<r<<" "<<0;
}
int main()
{
//freopen("expr.in","r",stdin);
//freopen("expr.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>ys;
n=strlen(ys);
bool a=0,b=0,c=0;
for(int i=0;i<n;i++)
{
if(ys[i]=='(')
a=1;
if(ys[i]=='&')
b=1;
if(ys[i]=='|')
c=1;
}
if(c==1)
{
ans1();
return 0;
}
if(b==1)
{
ans2();
return 0;
}
}