Cod sursa(job #2114724)

Utilizator Roby54151Robert Cojocariu Roby54151 Data 25 ianuarie 2018 19:53:24
Problema Bool Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s[10005], *p, vall[30], x;
int n;
int si();
int val();
int sau()
{
    int r=si();
    while(*p=='O' && *(p+1)=='N')
    {
        p+=3;
        r|=si();
    }
    return r;
}
int si()
{
    int r=val();
    while(*p=='A' && *(p+1)=='N')
    {
        p+=4;
        r&=val();
    }
    return r;
}
int val()
{
    int r=0;
    if(*p=='(')
    {
        p++;
        r=sau();
        p++;
    }
    else
        if(*p=='T' && *(p+1)=='R')
        {
            r=1;
            p+=5;
        }
        else
            if(*p=='F' && *(p+1)=='A')
            {
                r=0;
                p+=6;
            }
            else
                if(*p=='N' && *(p+1)=='O')
                {
                    p+=4;
                    r=!val();
                }
                else
                {
                    r=vall[*p-'A'];
                    p+=2;
                }
    return r;
}
int main()
{
    f.getline(s, 10002);
    f>>n;
    for(int i=0; i<n; i++)
    {
        f>>x;
        p=s;
        if(vall[x-'A']==0)
            vall[x-'A']=1;
        else
            vall[x-'A']=0;
        g<<sau();
    }
    return 0;
}