Pagini recente » Cod sursa (job #1477700) | Istoria paginii preoni-2007/clasament/runda-2/10 | Cod sursa (job #1730274) | Cod sursa (job #2665896) | Cod sursa (job #187189)
Cod sursa(job #187189)
#include<stdio.h>
#include<string.h>
char e[2000],c;
int n,lg,i,j,a[200];
int EvalExp();
int EvalTermen();
inline int min(int,int);
inline int max(int,int);
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
i=0;
scanf("%c",&e[0]);
while (e[i]!='\n')
{
i++;
scanf("%c",&e[i]);
if (e[i]==' ') i--;
}
lg=i;
scanf("%d\n",&n);
for (i=1;i<=200;i++)
a[i]=0;
for (j=1;j<=n;j++)
{
scanf("%c",&c);
if (a[c]==0) a[c]=1;
else a[c]=0;
i=0;
printf("%d",EvalExp());
}
printf("\n");
return 0;
}
int EvalExp()
{int r=EvalTermen();
while ((i<lg) && ((e[i]=='A' && e[i+1]=='N' && e[i+2]=='D')||(e[i]=='O' && e[i+1]=='R')))
{
if (e[i]=='A')
{
i+=3;
r=min(r,EvalTermen());
}
else
{
i+=2;
r=max(r,EvalTermen());
}
}
return r;
}
int EvalTermen()
{int f;
if (e[i]=='('){
i++;
f=EvalExp();
i++;
}
else{
if (e[i]=='N' && e[i+1]=='O' && e[i+2]=='T'){
i+=3;
if (e[i]=='T' && e[i+1]=='R' && e[i+2]=='U' && e[i+3]=='E'){
i+=4;
return 0;
}
if (e[i]=='F' && e[i+1]=='A' && e[i+2]=='L' && e[i+3]=='S' && e[i+4]=='E'){
i+=5;
return 1;
}
i++;
return 1-a[e[i-1]];
}
else{
if (e[i]=='T' && e[i+1]=='R' && e[i+2]=='U' && e[i+3]=='E'){
i+=4;
return 0;
}
if (e[i]=='F' && e[i+1]=='A' && e[i+2]=='L' && e[i+3]=='S' && e[i+4]=='E'){
i+=5;
return 1;
}
i++;
return a[e[i-1]];
}
}
return f;
}
inline int min(int a, int b)
{
if (a<b)return a;
else return b;
}
inline int max(int a,int b)
{
if(a>b)return a;
else return b;
}