Pagini recente » Cod sursa (job #1920315) | Cod sursa (job #367672) | Cod sursa (job #2532266) | Cod sursa (job #2579323) | Cod sursa (job #2666495)
#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;
if(*sir == '(') {
++sir;
ans = E(sir);
++sir;
}
else
if(*sir == 'N' && *(sir + 1) == 'O' && *(sir + 2) == 'T') {
sir += 4;
ans = E(sir);
++sir;
}
else
if(isalpha(*sir) && !isalpha(*(sir + 1))) {
ans = vals[*sir - 'A'];
sir += 2;
}
else {
if(*sir == 'T') {
ans = true;
sir += 5;
}
else {
ans = false;
sir += 6;
}
}
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);
}
}