Cod sursa(job #2271236)

Utilizator BogdanGhGhinea Bogdan BogdanGh Data 28 octombrie 2018 11:48:50
Problema Bool Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;
char c[1005],*p,a;
bool b[300];
int n,i;
int eval();
int termen();
int factor()
{
    int r=0,ok=0;
    if(*p=='(')
    {
        p++;
        r=eval();
        p++;}
     else if(*p=='N'&&*(p+1)=='O')
    {
        p+=4;
        ok=!ok;
        r=factor();
    }
    else if(*p=='T'&&*(p+1)=='R')
        {r=1;p+=5;}
        else if(*p=='F'&&*(p+1)=='A')
        {r=0;p+=6;}
    else {r=b[*p];p+=2;}
    if(ok)r=!r;
    return r;
}
int termen()
{
    int r=factor();
    while(*p=='A'&&*(p+1)=='N')
    {
        p+=4;
        r=r&factor();
    }
    return r;
}
int eval()
{
   int r=termen();
   while(*p=='O'&&*(p+1)=='R')
    {
        p+=3;
        r=r|termen();
    }
   return r;
}
ifstream f("bool.in");
ofstream g("bool.out");
int main()
{
    f.getline(c,1003);
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a;
        p=c;
        b[a]=!b[a];
        g<<eval();
    }
    return 0;
}