Pagini recente » Cod sursa (job #2844210) | Cod sursa (job #2040214) | Cod sursa (job #288129) | Cod sursa (job #854968) | Cod sursa (job #1248679)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int sigma= 26;
int val[sigma+1], n;
int solve();
string s, modif;
string::iterator it;
int termen( ) {
int notnum= 0;
string::iterator p= it; ++p;
for ( ; *it=='N' && *p=='O'; ++notnum ) {
++it, ++it, ++it, ++it;
p= it; ++p;
}
bool res;
if ( *it=='(' ) ++it, res= solve(), ++it;
else {
res= val[*it-'A'];
p= it; ++p;
if ( res=='T' && *p=='R' ) res= 1;
else if ( res=='F' && *p=='A' ) res= 0;
while ( *it>='A' && *it<='Z' ) ++it; ++it;
}
if ( notnum%2==1 ) res= 1-res;
return res;
}
int factor( ) {
bool res= termen();
for ( ; *it=='A'; ) {
while ( *it>='A' && *it<='Z' ) ++it; ++it;
res= res&termen();
}
return res;
}
int solve( ) {
bool res= factor();
for ( ; *it=='O'; ) {
while ( *it>='A' && *it<='Z' ) ++it; ++it;
res= res|factor();
}
return res;
}
int main( ) {
getline( fin, s );
fin>>n>>modif;
for ( int i= 0; i<=sigma; ++i ) val[i]= 0;
for ( int i= 0; i<=n-1; ++i ) {
val[modif[i]-'A']= 1-val[modif[i]-'A'];
it= s.begin();
fout<<solve();
}
fout<<"\n";
return 0;
}