Cod sursa(job #3332468)

Utilizator andreea0146Nicula Andreea andreea0146 Data 6 ianuarie 2026 21:08:55
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<fstream>
using namespace std;
const int DMAX=1005;

ifstream fin("bool.in");
ofstream fout("bool.out");

char s[DMAX], *p;
int v[26];

int expresie();
int termen();
int factor();

int expresie()
{
    int r=termen();
    while(*p=='O'&&*(p+1)=='R')
    {
        p+=3;
        r|=termen();
    }
    return r;
}

int termen()
{
    int r=factor();
    while(*p=='A'&&*(p+1)=='N'&&*(p+2)=='D')
    {
        p+=4;
        r&=factor();
    }
    return r;
}

int factor()
{
    int r;
    if(*p=='(')
    {
        p++;
        r=expresie();
        p++;
    }
    else if(*p=='N'&&*(p+1)=='O'&&*(p+2)=='T')
    {
        p+=4;
        r=!factor();
    }
    else if(*p=='T'&&*(p+1)=='R'&&*(p+2)=='U'&&*(p+3)=='E')
    {
        p+=5;
        r=1;
    }
    else if(*p=='F'&&*(p+1)=='A'&&*(p+2)=='L'&&*(p+3)=='S'&&*(p+4)=='E')
    {
        p+=6;
        r=0;
    }
    else
    {
        r=v[*p-'A'];
        p+=2;
    }
    return r;
}

int main()
{
    int n;
    char c;
    fin.getline(s,DMAX);
    fin>>n;
    fin.get();
    while(n--)
    {
        fin.get(c);
        v[c-'A']^=1;
        p=s;
        fout<<expresie();
    }
    fin.close();
    fout.close();
    return 0;
}