Pagini recente » Cod sursa (job #2454727) | Cod sursa (job #1630861) | Cod sursa (job #2193743) | Cod sursa (job #1880310) | Cod sursa (job #2810628)
#include <bits/stdc++.h>
using namespace std;
inline void Open(const string Name) {
#ifndef ONLINE_JUDGE
(void)!freopen((Name + ".in").c_str(), "r", stdin);
(void)!freopen((Name + ".out").c_str(), "w", stdout);
#endif
}
bool H[26];
char s[1001];
bool e_AND(int &p);
bool e_OR(int &p);
void rem_space(int &p) {
while(s[p] == ' ')
p++;
}
bool termen(int &p) {
rem_space(p);
bool ans = 0;
if(s[p] == '(') {
p++, ans = e_AND(p), p++;
rem_space(p);
return ans;
}
if(s[p] == 'N' && s[p + 1] == 'O' && s[p + 2] == 'T') {
p += 3, ans = !e_AND(p);
rem_space(p);
return ans;
}
if(s[p] == 'T' && s[p + 1] == 'R' && s[p + 2] == 'U' && s[p + 3] == 'E') {
p += 4, ans = 1;
rem_space(p);
return ans;
}
if(s[p] == 'F' && s[p + 1] == 'A' && s[p + 2] == 'L' && s[p + 3] == 'S' && s[p + 4] == 'E') {
p += 5;
rem_space(p);
return ans;
}
ans = H[s[p] - 'A'];
rem_space(p);
return ans;
}
bool e_OR(int &p) {
rem_space(p);
bool res = termen(p);
while(s[p] == 'O' && s[p] == 'R') {
p += 2;
res |= termen(p);
}
rem_space(p);
return res;
}
bool e_AND(int &p) {
rem_space(p);
bool res = e_OR(p);
while(s[p] == 'A' && s[p + 1] == 'N' && s[p + 2] == 'D') {
p += 3;
res &= e_OR(p);
}
rem_space(p);
return res;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
Open("bool");
cin.getline(s, sizeof(s));
int N; cin >> N;
for(int i = 1;i <= N;i++) {
char ch; cin >> ch;
H[ch - 'A'] ^= 1;
int p = 0;
cout << e_AND(p);
}
return 0;
}