Pagini recente » Sedinta 2007-05-07 | Borderou de evaluare (job #400685) | Borderou de evaluare (job #709457) | Borderou de evaluare (job #2483512) | Cod sursa (job #1036674)
#include<cstdio>
using namespace std;
int C,i,n,A[300];
char sir[100009];
int termen();
int evalor();
int evaland();
int evaland()
{
int X=termen();
i++;
while(sir[i]=='A'&&sir[i+1]=='N'&&sir[i+2]=='D')
{
i+=4;
X&=termen();
i++;
}
return X;
}
int evalor()
{
int X=evaland();
i++;
while(sir[i]=='O'&&sir[i+1]=='R')
{
i+=3;
X|=evaland();
i++;
}
return X;
}
int termen()
{
int v=0;
if(sir[i]=='N'&&sir[i+1]=='O')
{
i+=4;
return (!termen());
}
if(sir[i]=='(')
{
i++;
v=evalor();
i++;
return v;
}
if(sir[i]=='T'&&sir[i+1]=='R')
{
i+=4;
return 1;
}
if(sir[i]=='F'&&sir[i+1]=='A')
{
i+=5;
return 0;
}
if(sir[i]>='A'&&sir[i]<='Z')
{
v=A[sir[i]];
i++;
return v;
}
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(sir+1);
scanf("%d\n",&n);
while(n)
{
n--;
scanf("%c",&C);
A[C]^=1;
i=1;
printf("%d",termen());
}
return 0;
}