Cod sursa(job #2841772)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 30 ianuarie 2022 14:26:45
Problema Bool Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 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+1]=='O' && s[i+2]=='R')
        i+=4,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;
    }
    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;
        fout<<expresie();
    }
    return 0;
}