#include<bits/stdc++.h>
using namespace std;
struct san
{
int v,x,y;
san operator + (san a)
{
san b;
b.v=a.v;
b.x=a.x+x;
b.y=a.y+y;
return b;
}
};
char c[1919810],hj[1919810];
int i,l;
stack<char> s;
stack<san> sp;
void n()
{
hj[++l]=s.top();
s.pop();
return ;
}
int main()
{
cin>>c;
for(i=0;i<strlen(c);i++)
{
if(c[i]=='0'||c[i]=='1')
{
hj[++l]=c[i];
}
else if(c[i]=='(')
{
s.push('(');
}
else if(c[i]==')')
{
while(s.top()!='('&&s.size())
{
n();
}
s.pop();
}
else
{
if(c[i]=='&')
{
while(s.size()&&s.top()=='&')
{
n();
}
}
else
{
while(s.size()&&(s.top()=='|'||s.top()=='&'))
{
n();
}
}
s.push(c[i]);
}
}
while(s.size()) n();
for(i=1;i<=l;i++)
{
if(hj[i]=='0'||hj[i]=='1')
{
sp.push((san){hj[i]-'0',0,0});
}
else
{
san ri=sp.top();
sp.pop();
san le=sp.top();
sp.pop();
if(hj[i]=='&')
{
if(le.v==0)
{
le.x++;
sp.push(le);
}
else
{
sp.push(le+ri);
}
}
else
{
if(le.v==1)
{
le.y++;
sp.push(le);
}
else
{
sp.push(le+ri);
}
}
}
}
cout<<sp.top().v<<endl<<sp.top().x<<' '<<sp.top().y;
return 0;
}
大佬帮帮蒟蒻吧
