Cod sursa(job #2114715)

Utilizator Roby54151Robert Cojocariu Roby54151 Data 25 ianuarie 2018 19:42:35
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[1002], *p, vall[30], x;
int n;
int si();
int val();
int sau()
{
    int r=si();
    while(*p=='O' && *(p+1)=='N')
    {
        r|=si();
        p+=3;
    }
    return r;
}
int si()
{
    int r=val();
    while(*p=='A' && *(p+1)=='N')
    {
        r&=val();
        p+=4;
    }
    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')
                {
                    r=!val();
                    p+=4;
                }
                else
                {
                    r=vall[*p-'A'];
                    p+=2;
                }
    return r;
}
int main()
{
    f.getline(s, 1002);
    f>>n;
    for(int i=0; i<n; i++)
    {
        p=s;
        f>>x;
        if(vall[x-'A']==0)
            vall[x-'A']=1;
        else
            vall[x-'A']=0;
        g<<sau();
    }
    return 0;
}