Cod sursa(job #1846353)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 12 ianuarie 2017 16:19:43
Problema Bool Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
# include <iostream>
# include <fstream>

using namespace std;

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

bool E( int &p );

bool T( int &p ) {
    return ( s[p] == 'N' && s[p + 1] == 'O' ? !T( p += 3 )
           : s[p] == 'T' && s[p + 1] == 'R' ? p += 4
           : s[p] == 'F' && s[p + 1] == 'A' ? !( p += 5 )
           : s[p] == '(' ? E( ++ p ) && ( p ++ ) : v[s[p ++]] );
}

bool F( int &p ) {
    return T( p ) & ( s[p] == 'A' && s[p + 1] == 'N' ? T( p += 3 ) : 1 );
}

bool E( int &p ) {
    return F( p ) | ( s[p] == 'O' && s[p + 1] == 'R' ? F( p += 2 ) : 0 );
}

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, fout << E( p = 0 );

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

    return 0;
}