Cod sursa(job #2666476)

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

using namespace std;

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

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

bool T1(char* &sir);
bool T2(char* &sir);
bool F(char* &sir);

bool E(char* &sir) {
    bool ans = T1(sir);
    while(sir[0] == 'O' && sir[1] == 'R') {
        sir += 2;
        ans |= T1(sir);
    }
    return ans;
}

bool T1(char* &sir) {
    bool ans = T2(sir);
    while(sir[0] == 'A' && sir[1] == 'N' && sir[2] == 'D') {
        sir += 3;
        ans &= T2(sir);
    }
    return ans;
}

bool T2(char* &sir) {
    bool ans = F(sir);
    while(sir[0] == 'N' && sir[1] == 'O' && sir[2] == 'T') {
        sir += 3;
        ans &= F(sir);
    }
    return ans;
}

bool F(char* &sir) {
    bool ans;
    if(sir[0] == '(') {
       ++sir;
       ans = E(sir);
       ++sir;
    }
    else
        ans = vals[sir[0] - 'A'];
    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);
    }
}