Cod sursa(job #825782)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 29 noiembrie 2012 16:16:15
Problema Bool Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>
using namespace std;
bool E(),T(),F();
int l[50],t;
char s[1005],*p,x;
int main()
{
    freopen("bool.in","r",stdin);
    freopen("bool.out","w",stdout);
    gets(s);
    scanf("%d\n",&t);
    for(;t;t--)
    {
        scanf("%c",&x);
        l[x-'A']=!l[x-'A'];
        p=s;
        printf("%d",E());
    }
    return 0;
}
bool E()
{
    int rez=T();
    if(*p=='O'&&*(p+1)=='R')
    {
        p+=3;
        rez|=T();
    }
    return rez;
}
bool T()
{
    int rez=F();
    if(*p=='A'&&*(p+1)=='N')
    {
        p+=4;
        rez&=F();
    }
    return rez;
}
bool F()
{
    int rez=0;
    if(*p=='(')
    {
        p++;
        rez=E();
        p++;
    }
    else if(*p=='N'&&*(p+1)=='O')
    {
        p+=4;
        rez=!F();
    }
    else if(*p=='T'&&*(p+1)=='R')
    {
        p+=5;
        rez=1;
    }
    else if(*p=='F'&&*(p+1)=='A')
    {
        p+=6;
        rez=0;
    }
    else
    {
        p+=2;
        rez=l[*p-'A'];
    }
    return rez;
}