Nu aveti permisiuni pentru a descarca fisierul grader_test3.in
Cod sursa(job #201716)
Utilizator | Data | 3 august 2008 11:50:31 | |
---|---|---|---|
Problema | Bool | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.03 kb |
#include<cstdio>
char s[1100],chr;
long i,n,j;
bool a[50];
bool expr();
bool term();
bool elem();
bool expr(){
bool r=term();
while(s[i]=='O' && s[i+1]!=' '){
i+=3;
j=term();
r=j || r;
i++;
}
return r;
}
bool term(){
bool r=elem();
while(s[i]=='A' && s[i+1]!=' '){
i+=4;
r=r && elem();
i++;
}
return r;
}
bool elem(){
bool r=0;
if(s[i]=='T' && s[i+1]!=' '){
i+=5;
r=1;
}
if(s[i]=='F' && s[i+1]!=' '){
r=0;
i+=6;
}
if(s[i]=='('){
i++;
r=expr();
i++;
}
if(s[i]=='N' && s[i+1]!=' '){
i+=4;
j=(long)(s[i]-'A');
r=!(a[j]);
i+=2;
}
if(s[i+1]==' '){
j=(long)(s[i]-'A');
r=a[j];
i+=2;
}
return r;
}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
scanf("%c",&chr);
j=0;
while(chr!='\n'){
s[j++]=chr;
scanf("%c",&chr);
}
scanf("%ld\n",&n);
for(;n>0;n--){
scanf("%c",&chr);
j=(long)(chr-'A');
a[j]=!(a[j]);
i=0;
printf("%ld",expr());
}
fclose(stdin);
fclose(stdout);
return 0;
}