Cod sursa(job #2841784)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 30 ianuarie 2022 14:33:15
Problema Bool Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bool.in");
ofstream fout("bool.out");
char s[1010],c;
int i,n;
map<char,bool>f;
int term(),fact();
int expresie()
{
    int sum=term();
    while(s[i]=='O' && s[i+1]=='R')
        i+=3,sum=(sum | term());
    return sum;
}
int term()
{
    int prod=fact();
    while(s[i+1]=='A' && s[i+2]=='N')
        i+=5,prod=(prod & fact());
    return prod;
}
int fact()
{
    int val=0,semn=0;
    while(s[i]=='N' && s[i+1]=='O')
        semn=1-semn,i+=4;
    if(s[i]=='(')
    {
        i++;
        val=expresie();
        i+=2;
        if(semn==0)
            return val;
        else return !val;
    }
    if(s[i]=='T' && s[i+1]=='R')
        i+=5,val=1;
    else if(s[i]=='F' && s[i+1]=='A')
        i+=6,val=0;
    else val=f[s[i]];
    if(semn==0)
        return val;
    else return !val;
}
int main()
{
    for(i='A';i<='Z';i++)
        f[(char)i]=false;
    fin.getline(s,1005);
    fin>>n;
    while(n--)
    {
        fin>>c;
        f[c]=(!f[c]);
        i=0;
        int debug=strlen(s);
        fout<<expresie();
    }
    return 0;
}