Cod sursa(job #1116514)

Utilizator serban_ioan97Ciofu Serban serban_ioan97 Data 22 februarie 2014 17:14:28
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 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;
}