Mai intai trebuie sa te autentifici.
Cod sursa(job #2742468)
Utilizator | Data | 20 aprilie 2021 23:29:47 | |
---|---|---|---|
Problema | Bool | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.6 kb |
#include <fstream>
#include <string>
using namespace std;
const int SIGMA = 26;
int poz;
string linie;
bool val[SIGMA];
bool si();
bool paranteze();
bool sau()
{
bool sol = si();
while (linie[poz] == 'O' && linie[poz + 1] == 'R')
{
poz += 3;
sol = sol | si();
}
return sol;
}
bool si()
{
bool sol = paranteze();
while (linie[poz] == 'A' && linie[poz + 1] == 'N' && linie[poz + 2] == 'D')
{
poz += 4;
sol = sol & paranteze();
}
return sol;
}
bool paranteze()
{
bool sol;
if (linie[poz] == '(')
{
poz++;
sol = sau();
poz++;
}
else if (linie[poz] == 'N' && linie[poz + 1] == 'O' && linie[poz + 2] == 'T')
{
poz += 4;
sol = !paranteze();
}
else if (linie[poz] == 'T' && linie[poz + 1] == 'R' && linie[poz + 2] == 'U' && linie[poz + 3] == 'E')
{
poz += 5;
sol = true;
}
else if (linie[poz] == 'F' && linie[poz + 1] == 'A' && linie[poz + 2] == 'L' && linie[poz + 3] == 'S' && linie[poz + 4] == 'E')
{
poz += 6;
sol = false;
}
else
{
sol = val[linie[poz] - 'A'];
poz += 2;
}
return sol;
}
int main()
{
ifstream in("bool.in");
ofstream out("bool.out");
getline(in, linie);
int n;
in >> n;
for (int i = 1; i <= n; i++)
{
char c;
in >> c;
val[c - 'A'] = !val[c - 'A'];
poz = 0;
out << sau();
}
return 0;
}