Cod sursa(job #1873207)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 8 februarie 2017 20:46:51
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
# include <iostream>
# include <fstream>

using namespace std;

int p = 0;
char s[1001];
bool v[128];

bool E();

bool T() {
    if ( s[p] == 'N' && s[p + 1] == 'O' ) {
        p += 3;
        return !T();
    } else if ( s[p] == 'T' && s[p + 1] == 'R' ) {
        p += 4;
        return true;
    } else if ( s[p] == 'F' && s[p + 1] == 'A' ) {
        p += 5;
        return false;
    } else if ( s[p] == '(' ) {
        p ++;
        bool t = E();
        p ++;
        return t;
    } else {
        bool t = v[s[p]];
        p ++;
        return t;
    }
}

bool F() {
    bool t = T();
    while ( s[p] == 'A' && s[p + 1] == 'N' ) {
        p += 3;
        t &= T();
    }

    return t;
}

bool E() {
    bool t = F();
    while ( s[p] == 'O' && s[p + 1] == 'R' ) {
        p += 2;
        t |= F();
    }

    return t;
}

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

    noskipws( fin );
    fin >> s[p];
    while ( s[p] != '\n' ) {
        p += ( s[p] != ' ' );
        fin >> s[p];
    }
    skipws( fin );

    int n;
    char q;
    fin >> n;

    for ( int i = 0; i < n; i ++ )
        fin >> q, v[q] ^= 1, p = 0, fout << E();

    fin.close();
    fout.close();

    return 0;
}