Pagini recente » Infoarena Monthly 2014 - Clasament | Cod sursa (job #2976364) | Cod sursa (job #1526081) | Cod sursa (job #2869524) | Cod sursa (job #2265118)
#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 val[300];
int i = 0;
int AND();
int NOT();
int OR()
{
int r = AND();
while(s[i] == 'O' && s[i + 1] == 'R')
{
i += 2;
r |= AND();
}
return r;
}
int AND()
{
int r = NOT();
while(s[i] == 'A' && s[i + 1] == 'N' && s[i + 2] == 'D')
{
i += 3;
r &= NOT();
}
return r;
}
int NOT()
{
if(s[i] == '(')
{
i++;
OR();
i++;
if(s[i] == ' ')
i++;
}
if(s[i] == 'N' && s[i + 1] == 'O' && s[i + 2] == 'T')
{
i += 3;
return !NOT();
}
i += 2;
if(s[i] == ' ')
i++;
return val[s[i - 2]];
}
main()
{
getline(cin, s);
int n;
cin >> n;
while(n--)
{
char c;
cin >> c;
val[c] ^= 1;
i = 0;
cout << OR();
}
}