Cod sursa(job #1047324)

Utilizator razvan2006razvan brezulianu razvan2006 Data 4 decembrie 2013 11:23:21
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
using namespace std;
int C,i,n,A[300];
char sir[100009];
int termen();
int evalor();
int evaland();
int evaland()
{
    int X=termen();
    while(sir[i+1]=='A'&&sir[i+2]=='N'&&sir[i+3]=='D')
    {
        i+=5;
        X&=termen();
    }
    return X;
}
int evalor()
{
    int X=evaland();
    while(sir[i+1]=='O'&&sir[i+2]=='R')
    {
        i+=4;
        X|=evaland();
    }
    return X;
}
int termen()
{
    int v=0;
    if(sir[i]=='N'&&sir[i+1]=='O')
    {
        i+=4;
        return (!termen());
    }
    if(sir[i]=='(')
    {
        i++;
        v=evalor();
        i++;
        return v;
    }
    if(sir[i]=='T'&&sir[i+1]=='R')
    {
        i+=4;
        return 1;
    }
    if(sir[i]=='F'&&sir[i+1]=='A')
    {
        i+=5;
        return 0;
    }
    if(sir[i]>='A'&&sir[i]<='Z')
    {
        v=A[sir[i]];
        i++;
        return v;
    }
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(sir+1);
scanf("%d\n",&n);
while(n)
{
    n--;
    scanf("%c",&C);
    A[C]^=1;
    i=1;
    printf("%d",evalor());
}
return 0;
}