Pagini recente » Cod sursa (job #2490121) | Cod sursa (job #3279588) | Cod sursa (job #2483210) | Cod sursa (job #2082459) | Cod sursa (job #2265104)
#include <fstream>
#include <vector>
#include <bitset>
#include <unordered_map>
#include <algorithm>
#include <queue>
#include <math.h>
#include <iomanip>
#include <stack>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
string s;
int AND();
int NOT();
int i;
int val[300];
int OR()
{
int r = AND();
while(s[i] == '|')
{
i++;
r |= AND();
}
return r;
}
int AND()
{
int r = NOT();
while(s[i] == '&')
{
i++;
r &= NOT();
}
return r;
}
int NOT()
{
int r = 0;
if(s[i] == '(')
{
i++;
r = OR();
i++;
return r;
}
else
if(s[i] == '!')
{
i++;
return !NOT();
}
i++;
return val[s[i - 1]];
}
#define pb push_back
main()
{
string t;
getline(cin, t);
for(int i = 0; i < t.size(); i++)
if(t[i] != ' ')
{
if(t[i] == 'O' && i + 1 < t.size() && t[i + 1] == 'R')
{
s.pb('|');
i++;
}
else
if(t[i] == 'N' && i + 2 < t.size() && t[i + 1] == 'O' && t[i + 2] == 'T')
{
s.pb('!');
i += 2;
}
else
if(t[i] == 'A' && i + 2 < t.size() && t[i + 1] == 'N' && t[i + 2] == 'D')
{
s.pb('&');
i += 2;
}
else
s.pb(t[i]);
}
int n;
cin >> n;
while(n--)
{
char c;
cin >> c;
val[c] ^= 1;
i = 0;
cout << OR();
}
}