Cod sursa(job #2076076)

Utilizator alexandruilieAlex Ilie alexandruilie Data 26 noiembrie 2017 09:40:51
Problema Bool Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char c,s[100000],*p;
int q,i,v[30];
bool si();
bool sau();
bool val();
int main()
{
    f.getline(s,100000);p=s;
    f>>q;
    for(i=1;i<=q;i++)
    {
        f>>c;
        if(v[c-'A']==0) v[c-'A']=1;
        else v[c-'A']=0;
        g<<si();
    }
    return 0;
}
bool si()
{
    bool r=sau();
    if(*p=='A' && *(p+1)=='N')
    {
        p=p+3;
        r=r&sau();
    }
    return r;
}
bool sau()
{
    bool r=val();
    if(*p=='O'&&*(p+1)=='R')
    {
        p=p+2;
        r=r&val();
    }
    return r;
}
bool val()
{
    bool r;
    if(*p==' ') p++;
    if(*p=='(') {
        p++;
        r=si();
        p++;
       }
    else
    {
        if(*p=='T'&&*(p+1)=='R')
            {r=1;p=p+5;}
        else if(*p=='F'&&*(p+1)=='A')
        {
            r=0;p=p+6;
        }
        else r=v[*p-'A'];
    }
    return r;
}