Pagini recente » Cod sursa (job #1278825) | Cod sursa (job #2144024) | Istoria paginii runda/prega_oji2015_vi_3 | Cod sursa (job #1004968) | Cod sursa (job #2666476)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[1024];
bitset < 26 > vals;
bool T1(char* &sir);
bool T2(char* &sir);
bool F(char* &sir);
bool E(char* &sir) {
bool ans = T1(sir);
while(sir[0] == 'O' && sir[1] == 'R') {
sir += 2;
ans |= T1(sir);
}
return ans;
}
bool T1(char* &sir) {
bool ans = T2(sir);
while(sir[0] == 'A' && sir[1] == 'N' && sir[2] == 'D') {
sir += 3;
ans &= T2(sir);
}
return ans;
}
bool T2(char* &sir) {
bool ans = F(sir);
while(sir[0] == 'N' && sir[1] == 'O' && sir[2] == 'T') {
sir += 3;
ans &= F(sir);
}
return ans;
}
bool F(char* &sir) {
bool ans;
if(sir[0] == '(') {
++sir;
ans = E(sir);
++sir;
}
else
ans = vals[sir[0] - 'A'];
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);
}
}