Cod sursa(job #3216132)

Utilizator anast56Anastasia Rosan anast56 Data 15 martie 2024 17:41:58
Problema Bool Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;

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

int i, n, freq[100];
char s[1001], x;

bool expresie();
bool termen();
bool constanta();

bool expresie()
{
    bool r = termen();

    i ++;

    while ((s[i] == 'A' && s[i + 1] == 'N') || (s[i] == 'O' && s[i + 1] == 'R'))
    {
        if (s[i] == 'A' && s[i + 1] == 'N')
        {
            i += 4;
            r &= termen();
        }
        else if (s[i] == 'O' && s[i + 1] == 'R')
        {
            i += 3;
            r |= termen();
        }
    }

    return r;
}

bool termen()
{
    bool r;

    if (s[i] == '(')
    {
        i ++;
        r = expresie();
        i ++;
    }
    else
        r = constanta();

    return r;
}

bool constanta()
{
    bool r = 1;

    if (freq[s[i]]) r = !r;

    if (s[i] == 'N' && s[i + 1] == 'O')
        r = !r, i += 4;

    return r;
}

int main()
{
    fin.getline(s, 1001);
    fin >> n;

    while (n)
    {
        fin >> x;

        if (freq[int(x) - 'A']) freq[(int)x - 'A'] --;
        else
            freq[(int)x - 'A'] ++;

        fout << expresie();

        n --;
    }

    return 0;
}