Cod sursa(job #2666498)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 1 noiembrie 2020 23:25:35
Problema Bool Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <bits/stdc++.h>

using namespace std;

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

char s[1024];
bitset < 26 > vals;

bool T(char* &sir);
bool F(char* &sir);

bool E(char* &sir) {
    bool ans = T(sir);
    while(*sir == 'O' && *(sir + 1) == 'R') {
        sir += 3;
        ans |= T(sir);
    }
    return ans;
}

bool T(char* &sir) {
    bool ans = F(sir);
    while(*sir == 'A' && *(sir + 1) == 'N') {
        sir += 4;
        ans &= F(sir);
    }
    return ans;
}

bool F(char* &sir) {
    bool ans = false;
    if(*sir == '(') {
       ++sir;
       ans = E(sir);
       ++sir;
    }
    else
        if(*sir == 'N' && *(sir + 1) == 'O') {
            sir += 4;
            ans = E(sir);
        }
    else
        if(*sir == 'T' && *(sir + 1) == 'R') {
            ans = true;
            sir += 5;
        }
    else
        if(*sir == 'F' && *(sir + 1) == 'A') {
            ans = false;
            sir += 6;
        }
    else {
        ans = vals[*sir - 'A'];
        sir += 2;
    }
    return ans;
}

int main() {
    fin.getline(s, sizeof(s));
    int Q;
    string modified;
    fin >> Q >> modified;
    for(char x : modified) {
        vals[x - 'A'] = !vals[x - 'A'];
        char* p = s;
        fout << E(p);
    }
}