Nu aveti permisiuni pentru a descarca fisierul grader_test2.in
Cod sursa(job #1898397)
Utilizator | Data | 1 martie 2017 23:42:07 | |
---|---|---|---|
Problema | Bool | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.46 kb |
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 1005;
int Litera[100], i, Q, n, ind;
char s[Nmax], q[105];
string sir;
void normalizare() {
for (int i = 1; i <= n; ++i) {
if (s[i] == 'A' && s[i + 2] == 'D') sir += '&', i += 2;
else
if (s[i] == '0' && s[i + 1] == 'R') sir += '|', ++i;
else
if (s[i] == 'N' && s[i + 2] == 'T') sir += '!', i += 2;
else
if (s[i] == 'T' && s[i + 1] == 'R') sir += '1', i += 3;
else
if (s[i] == 'F' && s[i + 1] == 'A') sir += '0', i += 4;
else sir += s[i];
}
}
int SAU();
int NOT() {
int nr = 0;
if (sir[ind] == '(') ++ind, nr = SAU(), ++ind;
else if (sir[ind] == '!') ++ind, nr = NOT() ^ 1;
else if (isalpha(sir[ind])) nr = Litera[sir[ind]], ++ind;
else nr = sir[ind], ++ind;
return nr;
}
int SI() {
int nr = NOT();
while (sir[ind] == '&') ++ind, nr &= NOT();
return nr;
}
int SAU() {
int nr = SI();
while (sir[ind] == '|') ++ind, nr |= SI();
return nr;
}
int main ()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
gets(s + 1), n = strlen(s + 1);
scanf("%d\n", &Q);
gets(q + 1);
sir += ' ';
normalizare();
cerr << sir;
for (i = 1; i <= Q; ++i){
ind = 1, Litera[q[i]] ^= 1;
printf("%d", SAU());
}
printf("\n");
return 0;
}