Pagini recente » Cod sursa (job #852807) | Diferente pentru problema/zigzag intre reviziile 13 si 14 | Cod sursa (job #475277) | Cod sursa (job #1733336) | Cod sursa (job #303161)
Cod sursa(job #303161)
#include<algorithm>
using namespace std;
#define DIM 1001
int n,lg,alf[31];
char s[DIM],*p;
int eval1();
int eval2();
int eval0(){
int rez=eval1();
while(*p=='O'&&*(p+1)=='R'){
p+=3;
rez|=eval1();}
return rez;}
int eval1(){
int rez=eval2();
while(*p=='A'&&*(p+1)=='N'){
p+=4;
rez&=eval2();}
return rez;}
int eval2(){
int rez;
if(*p=='N'&&*(p+1)=='O'){
p+=4;
rez=!eval2();}
else if(*p=='T'&&*(p+1)=='R'){
p+=5;
rez=1;}
else if(*p=='F'&&*(p+1)=='A'){
p+=6;
rez=0;}
else if(*p=='('){
++p;
rez=eval0();
++p;}
else{
rez=alf[*p-'A'];
p+=2;}
return rez;}
void solve(){
int i;
char ch;
gets(s);
scanf("%d\n",&n);
for(i=0; i<n; ++i){
scanf("%c",&ch);
alf[ch-'A']=!alf[ch-'A'];
p=s;
printf("%d",eval0());}}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
solve();
return 0;}