Pagini recente » Cod sursa (job #1421765) | Cod sursa (job #1829739) | Cod sursa (job #904245) | Cod sursa (job #2325346) | Cod sursa (job #1882621)
#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);
#define tie cin.tie(0);
#define mp make_pair
#define ll long long
#define PII pair<int, int>
#define PLL pair<ll, ll>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
int n, cnt;
string s;
char rs[2005], c;
bool u[2005];
bool evaluate(int p);
bool ter(int p);
bool fac(int p)
{
bool r;
if (rs[p] == 'N' && rs[p] == 'O'){ p += 3; return !fac(p);}
else if (rs[p] == 'T' && rs[p+1] == 'R'){ p += 4; return true;}
else if (rs[p] == 'F' && rs[p+1] == 'A'){ p += 5; return false;}
else if (rs[p] == '(') ++p, r = evaluate(p), ++p;
else r = u[rs[p]], ++p;
return r;
}
bool ter(int p)
{
bool r = fac(p);
while (rs[p] == 'A' && rs[p+1] == 'N') p += 3, r &= fac(p);
return r;
}
bool evaluate(int p)
{
bool r = ter(p);
while (rs[p] == 'O' && rs[p+1] == 'R') p += 2, r |= ter(p);
return r;
}
int main(){
IOS tie
ifstream cin("bool.in");
ofstream cout("bool.out");
getline(cin, s);
for (int i = 0; i < s .size(); i++)
{
if (s[i] == ' ') continue;
rs[++cnt] = s[i];
}
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> c;
u[c] = !u[c];
int p = 1;
cout << evaluate(p);
}
cerr << "Fucking time elapsed: " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms" << '\n';
return 0;
}