Cod sursa(job #2813528)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 6 decembrie 2021 21:24:33
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int n,i;
char c,s[1005];
bool f[26];

bool _or();
bool _and();
bool _exp();

bool _or() {
    bool r=_and();
    while (s[i]=='O' && s[i+1]=='R') {
        i+=2;
        r|=_and();
    }
    return r;
}

bool _and() {
    bool r=_exp();
    while (s[i]=='A' && s[i+1]=='N') {
        i+=3;
        r&=_exp();
    }
    return r;
}

bool _exp() {
    bool r;
    if (s[i]=='(') {
        i++;
        r=_or();
        i++;
    }
    else
        if (s[i]=='N' && s[i+1]=='O') {
            i+=3;
            r=!_exp();
        }
        else
            if (s[i]=='T' && s[i+1]=='R') {
                r=1;
                i+=4;
            }
            else
                if (s[i]=='F' && s[i+1]=='A') {
                    r=0;
                    i+=5;
                }
                else {
                    r=f[s[i]-'A'];
                    i++;
                }
    return r;
}

int main() {
    c=fin.get();
    while (c!='\0' && c!='\n') {
        if (c!=' ')
            s[i++]=c;
        c=fin.get();
    }
    fin>>n;
    while (n--) {
        i=0;
        fin>>c;
        f[c-'A']=!f[c-'A'];
        fout<<_or();
    }
    return 0;
}