Cod sursa(job #2111786)

Utilizator elenaisaiaElena Isaia elenaisaia Data 22 ianuarie 2018 18:00:45
Problema Bool Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

char s[1005];
int val[30],numar;

int fct(int st,int dr)
{
    int nr=0;
    for(int i=dr;i>st;i--)
        if(nr==0&&s[i]=='R'&&s[i-1]=='O')
            return (fct(st,i-2)||fct(i+1,dr));
        else
            if(s[i]==')')
                nr--;
            else
                if(s[i]=='(')
                   nr++;
    nr=0;
    for(int i=dr;i>st+1;i--)
        if(nr==0&&s[i]=='D'&&s[i-1]=='N')
            return (fct(st,i-3)&&fct(i+1,dr));
        else
            if(s[i]==')')
                nr--;
            else
                if(s[i]=='(')
                   nr++;
    if(s[st]=='('&&s[dr]==')')
        return fct(st+1,dr-1);
    if(s[st]=='N'&&s[st+1]=='O')
        return !(fct(st+3,dr));
    while(s[st]==' ')
            st++;
    while(s[dr]==' ')
            dr--;
    if(st!=dr)
    {
        if(s[st]=='T')
            return 1;
        return 0;
    }
    return val[s[st]-'A'];
}

int main()
{
    int n,nr;
    ifstream fin("bool.in");
    ofstream fout("bool.out");
    fin.getline(s,1005);
    nr=strlen(s);
    fin>>n;
    for(int i=0;i<n;++i)
    {
        char x;
        fin>>x;
        if(val[x-'A'])
            val[x-'A']=0;
        else
            val[x-'A']=1;
        fout<<fct(0,nr-1);
    }
    return 0;
}