Pagini recente » Cod sursa (job #261931) | Cod sursa (job #2071038) | Cod sursa (job #2574846) | Cod sursa (job #1656841) | Cod sursa (job #1528399)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
char ss[1024];
string v;
int a[256], k;
inline int unu ();
inline int doi ();
inline int trei ();
inline int unu ()
{
int rez = doi ();
while (v[k] == '|')
++k, rez |= doi ();
return rez;
}
inline int doi ()
{
int rez = trei ();
while (v[k] == '&')
++k, rez &= trei ();
return rez;
}
inline int trei ()
{
int rez;
if (v[k] == '!')
{
++k;
return 1 ^ trei ();
}
if (v[k] == '(')
{
++k;
int rez = unu ();
++k;
return rez;
}
++k;
return a[v[k - 1]];
}
int main ()
{
freopen ("bool.in", "r", stdin);
freopen ("bool.out", "w", stdout);
gets (ss);
a['1'] = 1;
int nn = strlen (ss);
for (int i = 0; i < nn; ++i)
{
if (ss[i] == ' ') continue;
else if (ss[i] == 'T' && ss[i + 1] == 'R') v += '1', i += 3;
else if (ss[i] == 'F' && ss[i + 1] == 'A') v += '0', i += 4;
else if (ss[i] == 'O' && ss[i + 1] == 'R') v += '|', ++i;
else if (ss[i] == 'A' && ss[i + 1] == 'N') v += '&', i += 2;
else if (ss[i] == 'N' && ss[i + 1] == 'O') v += '!', i += 2;
else v += ss[i];
}
int n;
scanf ("%d\n", &n);
for (int i = 1; i <= n; ++i)
{
char c;
scanf ("%c", &c);
a[c] ^= 1;
k = 0;
printf ("%d", unu ());
}
printf ("\n");
return 0;
}