Pagini recente » Cod sursa (job #440237) | Cod sursa (job #916406) | Cod sursa (job #778257) | Cod sursa (job #560261) | Cod sursa (job #825783)
Cod sursa(job #825783)
#include<cstdio>
using namespace std;
bool E(),T(),F();
int l[50],t;
char s[1005],*p,x;
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
scanf("%d\n",&t);
for(;t;t--)
{
scanf("%c",&x);
l[x-'A']=!l[x-'A'];
p=s;
printf("%d",E());
}
return 0;
}
bool E()
{
int rez=T();
if(*p=='O'&&*(p+1)=='R')
{
p+=3;
rez|=T();
}
return rez;
}
bool T()
{
int rez=F();
if(*p=='A'&&*(p+1)=='N')
{
p+=4;
rez&=F();
}
return rez;
}
bool F()
{
int rez=0;
if(*p=='(')
{
p++;
rez=E();
p++;
}
else if(*p=='N'&&*(p+1)=='O')
{
p+=4;
rez|=!F();
}
else if(*p=='T'&&*(p+1)=='R')
{
p+=5;
rez=1;
}
else if(*p=='F'&&*(p+1)=='A')
{
p+=6;
rez=0;
}
else
{
p+=2;
rez=l[*p-'A'];
}
return rez;
}