Cod sursa(job #720730)

Utilizator ion824Ion Ureche ion824 Data 22 martie 2012 20:52:18
Problema Bool Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<cstdio>
char a[1005],modif[105]; bool lit[30]; int i;

bool factor2();
bool factor();

bool ff(){
  bool v=factor();
  while(a[i]=='A' && a[i+1]=='N'){ i+=3; v&=factor(); }    
   
  return v;  
}

bool factor(){
 bool v=factor2();      
 while(a[i]=='O' && a[i+1]=='R'){ i+=2; v|=factor2(); }       
 return v;   
}

bool factor2(){
 bool v=0;
 if(a[i]==' '){ ++i; v=factor2(); }
  else
   if(a[i]=='('){ ++i; v=ff(); ++i; }
      else
        if(a[i]=='N' && a[i+1]=='O'){ i+=3; v=!factor2(); }
          else if(a[i]=='T' && a[i+1]=='R'){ i+=4; v=1; }
            else if(a[i]=='F' && a[i+1]=='A'){ i+=5; v=0; }
              else if(a[i]<='Z' && a[i]>='A'){ v=lit[a[i]-'A']; ++i; }
  return v;
}

int main(void){
    freopen("bool.in","r",stdin);
    freopen("bool.out","w",stdout);
    int n,j;
    gets(a);
    scanf("%d\n",&n);
    gets(modif);
    for(j=0;j<n;++j){
                 lit[modif[j]-'A']=!lit[modif[j]-'A'];
                 i=0;
                 printf("%d",ff());
                     }
 return 0;
}