Pagini recente » Cod sursa (job #63127) | Cod sursa (job #2195685) | Cod sursa (job #648496) | Cod sursa (job #2663881) | Cod sursa (job #825788)
Cod sursa(job #825788)
#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();
while(*p=='O'&&*(p+1)=='R')
{
p+=3;
rez|=T();
}
return rez;
}
bool T()
{
int rez=F();
while(*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
{
rez=l[*p-'A'];
p+=2;
}
return rez;
}