Pagini recente » Cod sursa (job #3172302) | Cod sursa (job #3294620) | Cod sursa (job #838526) | Cod sursa (job #3129622) | Cod sursa (job #2666498)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[1024];
bitset < 26 > vals;
bool T(char* &sir);
bool F(char* &sir);
bool E(char* &sir) {
bool ans = T(sir);
while(*sir == 'O' && *(sir + 1) == 'R') {
sir += 3;
ans |= T(sir);
}
return ans;
}
bool T(char* &sir) {
bool ans = F(sir);
while(*sir == 'A' && *(sir + 1) == 'N') {
sir += 4;
ans &= F(sir);
}
return ans;
}
bool F(char* &sir) {
bool ans = false;
if(*sir == '(') {
++sir;
ans = E(sir);
++sir;
}
else
if(*sir == 'N' && *(sir + 1) == 'O') {
sir += 4;
ans = E(sir);
}
else
if(*sir == 'T' && *(sir + 1) == 'R') {
ans = true;
sir += 5;
}
else
if(*sir == 'F' && *(sir + 1) == 'A') {
ans = false;
sir += 6;
}
else {
ans = vals[*sir - 'A'];
sir += 2;
}
return ans;
}
int main() {
fin.getline(s, sizeof(s));
int Q;
string modified;
fin >> Q >> modified;
for(char x : modified) {
vals[x - 'A'] = !vals[x - 'A'];
char* p = s;
fout << E(p);
}
}