Cod sursa(job #2111756)

Utilizator elenaisaiaElena Isaia elenaisaia Data 22 ianuarie 2018 17:39:47
Problema Bool Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

char s[1005];
int val[30],numar;
ofstream fout("bool.out");

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;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--;
    nr=0;
    for(int i=dr;i>=st;i--)
        if(nr==0&&s[i]=='T'&&s[i-1]=='O')
            return !(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);
    while(s[st]==' ')
            st++;
    while(s[dr]==' ')
            dr--;
    if(st!=dr)
    {
        if(s[st]=='T')
            return 1;
        return 0;
    }
    int numar=val[s[st]-'A']; fout<< numar;
    return numar;
}

int main()
{
    int n,nr;
    ifstream fin("bool.in");
    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;
        int ceva;
        ceva=fct(0,nr-1);
    }
    return 0;
}