Cod sursa(job #720259)

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

int factor2();
int factor();

int ff(){
  int v=factor();    
  while(a[i]=='O' && a[i+1]=='R'){ i+=3; v|=factor(); }  
  return v;  
}

int factor(){
 int v=factor2();      
 while(a[i]=='A' && a[i+1]=='N'){ i+=4; v&=factor2(); }      
 return v;   
}

int factor2(){
 int v=0;   
 if(a[i]=='('){ ++i; v=ff(); ++i; }   
    else
      if(a[i]=='N' && a[i+1]=='O'){ i+=4; v=!factor2(); }
        else if(a[i]=='T' && a[i+1]=='R'){ i+=3; v=1; }
          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;   
}