Pagini recente » Cod sursa (job #2668082) | Cod sursa (job #623729) | Cod sursa (job #1712766) | Cod sursa (job #1640625) | Cod sursa (job #1837198)
#include <cstdio>
using namespace std;
int i, n, f[1005];
char c, s[1005];
inline bool eval();
inline bool op();
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
fgets(s, 1001, stdin);
scanf("%d\n", &n);
for(int j = 1; j <= n ; ++j){
scanf("%c", &c);
f[c] = 1 - f[c];
i = 0;
printf("%d", eval());
}
return 0;
}
inline bool eval(){
int r = op();
while(s[i] == 'A' || s[i] == 'O'){
if(s[i] == 'A'){
i += 4;
int r2 = op();
if(r == 1 && r2 == 1)
r = 1;
else
r = 0;
}
else{
i += 3;
int r2 = op();
if(r == 1 || r2 == 1)
r = 1;
else
r = 0;
}
}
return r;
}
inline bool op(){
int r = 0, ok = 0;
if(s[i] == 'N' && s[i + 1] == 'O'){
i += 4; ok = 1;
}
if(s[i] == 'T' && s[i + 1] == 'R')
r = 1, i += 4;
else if(s[i] == 'F' && s[i + 1] == 'A')
r = 0, i += 5;
else if(s[i] == '(')
{++i; r = eval(); ++i;}
else if(s[i] >= 'A' && s[i] <= 'Z')
r = f[s[i]], ++i;
if(s[i] == ' ') ++i;
if(ok == 1) r = 1 - r;
return r;
}