Pagini recente » Cod sursa (job #434429) | Cod sursa (job #1637108) | Cod sursa (job #1650930) | Cod sursa (job #170060) | Cod sursa (job #2204064)
#include <bits/stdc++.h>
#define N_MAX 1015
using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
char op,str[N_MAX];
int n,k,p;
bool hopa[N_MAX];
void skip()
{
while(p<=n && p==' ')
p++;
}
bool oor();
bool eval()
{
skip();
bool wtf;
if(str[p]=='(')
{
p++;
wtf=oor();
p++;
}
else if(str[p]=='T' && str[p+1]=='R')
{
p+=4;
wtf=true;
}
else if(str[p]=='F' && str[p+1]=='A')
{
p+=5;
wtf=false;
}
else if(str[p]=='N' && str[p+1]=='O')
{
p+=3;
wtf=!eval();
}
else
{
wtf=hopa[str[p]];
}
skip();
return wtf;
}
bool aand()
{
skip();
bool wtf=eval();
skip();
while(str[p]=='A' && str[p+1]=='N' && p<=n)
{
p+=3;
wtf &=eval();
skip();
}
return wtf;
}
bool oor()
{
skip();
bool wtf=aand();
skip();
while(str[p]=='O' && str[p+1]=='R' && p<=n)
{
p+=2;
wtf |=aand();
skip();
}
return wtf;
}
int main()
{
in.get(str+1,N_MAX-1);
in.get();
n=strlen(str+1);
in >> k;
for(int i=0; i<k; i++)
{
in >> op;
p=1;
hopa[op]=!hopa[op];
out << oor();
}
return 0;
}