Pagini recente » Cod sursa (job #2461407) | Cod sursa (job #1967675) | Cod sursa (job #2002412) | Cod sursa (job #3222710) | Cod sursa (job #3174599)
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define MOD 9001
ifstream fin("bool.in");
ofstream fout("bool.out");
vector<int> v;
string s;
bool val[300];
int index=0;
int Or();
int factor()
{
int res=0;
if(v[index]==2)
{
index++;
res = !Or();
}
else if(v[index]=='(')
{
index++;
res = Or();
index++;
}
else
{
if(isalpha(v[index]))
{
res = val[v[index]];
}
else
{
res= v[index];
}
index++;
}
//cout << res << " ";
return res;
}
int And()
{
int res = factor();
while(v[index]==3)
{
index++;
res = res && factor();
}
return res;
}
int Or()
{
int res=And();
while(v[index]==4)
{
index++;
res = res || And();
}
return res;
}
/// 1 3 ((0 4 2 0) 4 ((1)))
int solve()
{
index=0;
return Or();
}
int main()
{
getline(fin,s);
for(int i=0;i<s.size();i++)
{
if(s[i]==' ')
{
continue;
}
if(isalpha(s[i]))
{
vector<char> t;
while(i < s.size() && isalpha(s[i]) )
{
t.push_back(s[i++]);
}
i--;
if(t.size()==1)
{
v.push_back(t[0]);
}
else
{
if(t[0]=='N')
{
v.push_back(2);
}
if(t[0]=='A')
{
v.push_back(3);
}
if(t[0]=='O')
{
v.push_back(4);
}
if(t[0]=='T')
{
v.push_back(1);
}
if(t[0]=='F')
{
v.push_back(0);
}
}
}
else
{
v.push_back(s[i]);
}
}
int t;
fin >> t;
while(t--)
{
char x;
fin >> x;
val[x]=!val[x];
fout << solve();
}
}