比赛 |
CSP2022普及组 |
评测结果 |
WAAWAAWWWWAWWWWWWWWW |
题目名称 |
逻辑表达式 |
最终得分 |
25 |
用户昵称 |
嗨嗨嗨 |
运行时间 |
0.275 s |
代码语言 |
C++ |
内存使用 |
5.57 MiB |
提交时间 |
2022-10-29 17:23:08 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int l,i,a[1000001],topa,topb,num,ans1,ans2,ans;
char b[1000001];
bool fyu=false,fhuo=false,fkuohao=false;
string s;
int main()
{
freopen("csp2022pj_expr.in","r",stdin);
freopen("csp2022pj_expr.out","w",stdout);
cin>>s;
l=s.length();
for(i=0;i<l;i++)
{
if(s[i]=='('||s[i]==')') fkuohao=true;
if(s[i]=='|') fhuo=true;
if(s[i]=='&') fyu=true;
}
if(fkuohao==false)
{
for(i=0;i<l;i++)
{
if(s[i]=='1'||s[i]=='0')
{
a[++topa]=s[i]-48;
}
else
{
if(s[i]=='|') b[++topb]=s[i];
else
{
if(a[topa-1]=='0') ans1++;
a[topa-1]=a[topa-1]&a[topa];
topa--;
}
}
}
for(;topb!=0;)
{
if(a[topa-1]==1) ans2++;
a[topa-1]=a[topa-1]|a[topa];
topa--;
topb--;
}
cout<<a[1]<<endl<<ans1<<" "<<ans2;
return 0;
}
if(fhuo==false)
{
for(i=0;i<l;)
{
if(s[i]=='1'||s[i]=='0')
{
a[++topa]=s[i]-48;
i++;
}
else
{
if(s[i]=='&')
{
if(a[topa]==0)
{
ans++;
a[++topa]=0;
i++;
if(s[i]!='(')
{
if(i<l-1) i++;
}
else
{
for(;;)
{
if(s[i]=='(') num++;
if(s[i]==')') num--;
if(num==0)
{
if(i<l-1) i++;
num=0;
break;
}
i++;
}
}
}
else
{
b[++topb]=s[i];
i++;
}
}
else
{
if(s[i]=='(')
{
b[++topb]=s[i];
i++;
}
else
{
a[topa-1]=a[topa-1]&a[topa];
topa--;
i++;
}
}
}
}
cout<<a[topa]<<endl<<ans<<" "<<0;
return 0;
}
if(fyu==false)
{
for(i=0;i<l;)
{
if(s[i]=='1'||s[i]=='0')
{
a[++topa]=s[i]-48;
i++;
}
else
{
if(s[i]=='|')
{
if(a[topa]==1)
{
ans++;
a[++topa]=1;
i++;
if(s[i]!='(')
{
if(i<l-1) i++;
}
else
{
for(;;)
{
if(s[i]=='(') num++;
if(s[i]==')') num--;
if(num==0)
{
if(i<l-1) i++;
num=0;
break;
}
i++;
}
}
}
else
{
b[++topb]=s[i];
i++;
}
}
else
{
if(s[i]=='(')
{
b[++topb]=s[i];
i++;
}
else
{
a[topa-1]=a[topa-1]|a[topa];
topa--;
i++;
}
}
}
}
cout<<a[topa]<<endl<<0<<" "<<ans;
return 0;
}
return 0;
}