Pagini recente » Cod sursa (job #2923741) | Cod sursa (job #866896) | Cod sursa (job #931648) | Diferente pentru runda/happy-birthday-infoarena-2014 intre reviziile 2 si 1 | Cod sursa (job #291378)
Cod sursa(job #291378)
#include <stdio.h>
#include <string.h>
#define dim 1100
char s[dim], ch, *p;
int val[27], n;
int expr();
int termen()
{
int r=expr();
while ((*p=='A' && *(p+1)=='N' && *(p+2)=='D') || (*p=='O' && *(p+1)=='R'))
{
switch (*p)
{
case 'A':
p+=4;
r=r&&expr();
break;
case 'O':
p+=3;
r=r||expr();
break;
}
}
return r;
}
int expr()
{
int r;
if (*p=='N' && *(p+1)=='O')
{
p+=4;
r=!(termen());
p++;
}
else if (*p=='T' && *p=='R')
{
p+=5;
return 1;
}
else if (*p=='F' && *p=='A')
{
p+=6;
return 0;
}
return val[*p-'A'];
}
int main()
{
char ch;
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
fgets(s, dim, stdin);
memset(val, 0, sizeof(val));
scanf("%d\n", &n);
for (; n; n--)
{
scanf("%c\n", &ch);
val[ch-'A']^=1;
p=s;
printf("%d", termen());
}
return 0;
}