Cod sursa(job #1036674)

Utilizator geniucosOncescu Costin geniucos Data 19 noiembrie 2013 15:35:32
Problema Bool Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 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();
    i++;
    while(sir[i]=='A'&&sir[i+1]=='N'&&sir[i+2]=='D')
    {
        i+=4;
        X&=termen();
        i++;
    }
    return X;
}
int evalor()
{
    int X=evaland();
    i++;
    while(sir[i]=='O'&&sir[i+1]=='R')
    {
        i+=3;
        X|=evaland();
        i++;
    }
    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",termen());
}
return 0;
}