Cod sursa(job #983946)

Utilizator enedumitruene dumitru enedumitru Data 13 august 2013 00:08:38
Problema Bool Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <cstring>
char s[1005],*p;
int n,v[30],l;
int termen();
int factor();
int eval()
{   int r=termen();
	while(*p=='O') p+=2, r|=termen();
    return r;
}
int termen()
{   int r=factor();
	while(*p=='A') p+=3, r&=factor();
    return r;
}
int factor()
{   int r;
    if(*p=='(') p++, r=eval(), p++; 
		else if(*p=='T') p+=4, r=1; 
				else if(*p=='F') p+=5, r=0;
						else if(*p=='N') p+=3, r=!factor();
								else r=v[*p-'A'], p++;
    return r;
} 
int main()
{   freopen("bool.in","r",stdin);
    freopen("bool.out","w",stdout);
    fgets(s,1005,stdin);
    l=strlen(s);
    int i,k=0;
    for(i=0; i<l; i++) if(s[i]!=' ') s[k++]=s[i];
    s[k]='\0';
    scanf("%d\n",&n);
    char x[210];
    fgets(x,n+5,stdin);
    for (i=0; i<n; i++)
    {   v[x[i]-'A']=!v[x[i]-'A'];
        p=s;
        printf("%d",eval());
    }
	return 0;
}