Pagini recente » Cod sursa (job #265261) | Cod sursa (job #3194434) | Cod sursa (job #71906) | Cod sursa (job #1394913) | Cod sursa (job #1117092)
#include <stdio.h>
using namespace std;
char s[100005],*p,N,C;
bool us[50];
int a(),b(),c();
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s); scanf( "%d\n" , &N );
while( N-- ){
scanf("%c",&C);
us[C-'A']^=1; p=s;
printf( "%d" , a() ); }
return 0;
}
int a(){ // 'OR'
int r=b();
while( *(p+1) == 'O' && *(p+2) == 'R' ){ p+=4; r|=b(); }
return r;
}
int b(){ // 'AND'
int r=c();
while( *(p+1) == 'A' && *(p+2) == 'N' && *(p+3) == 'D' ){ p+=5; r&=c(); }
return r;
}
int c(){ // TERMEN
int r=0;
if( *p == 'N' && *(p+1) == 'O' ){ p+=4;return !c(); }
if( *p == '(' ) { ++p;r=a();++p;return r; }
if( *p == 'T' && *(p+1) == 'R' ){ p+=4; return 1; }
if( *p == 'F' && *(p+1) == 'A' ){ p+=5; return 0; }
if( *p >= 'A' && *p <= 'Z' ) { r=us[*p-'A'];++p;return r; }
return r;
}