Cod sursa(job #303161)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 9 aprilie 2009 16:43:59
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<algorithm>
using namespace std;

#define DIM 1001

int n,lg,alf[31];
char s[DIM],*p;

int eval1();
int eval2();

int eval0(){
	int rez=eval1();

	while(*p=='O'&&*(p+1)=='R'){
		p+=3;
		rez|=eval1();}
	return rez;}

int eval1(){
	int rez=eval2();

	while(*p=='A'&&*(p+1)=='N'){
		p+=4;
		rez&=eval2();}
	return rez;}

int eval2(){
	int rez;

	if(*p=='N'&&*(p+1)=='O'){
		p+=4;
		rez=!eval2();}
	else if(*p=='T'&&*(p+1)=='R'){
		p+=5;
		rez=1;}
	else if(*p=='F'&&*(p+1)=='A'){
		p+=6;
		rez=0;}
	else if(*p=='('){
		++p;
		rez=eval0();
		++p;}
	else{
		rez=alf[*p-'A'];
		p+=2;}
	return rez;}

void solve(){
	int i;
	char ch;

	gets(s);
	scanf("%d\n",&n);
	for(i=0; i<n; ++i){
		scanf("%c",&ch);
		alf[ch-'A']=!alf[ch-'A'];
		p=s;
		printf("%d",eval0());}}

int main(){

    freopen("bool.in","r",stdin);
    freopen("bool.out","w",stdout);

    solve();
    return 0;}