Cod sursa(job #3331419)

Utilizator Mateixx1Trandafir Matei Mateixx1 Data 27 decembrie 2025 19:30:44
Problema Bool Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
const int DMAX=1005;
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;
    f.getline(S,DMAX);
    f>>N;
    f.get();
    while(N--) {
        f.get(c);
        V[c-'A']^=1;
        p=S;
        g<<expresie();
    }
    f.close();
    g.close();
    return 0;
}