Cod sursa(job #2619935)

Utilizator FilipCuciucFilip Cuciuc FilipCuciuc Data 28 mai 2020 14:39:36
Problema Bool Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.06 kb
//
//  main.cpp
//  C++ - teste
//
//  Created by Filip Cuciuc on 03/02/2020.
//  Copyright © 2020 Filip Cuciuc. All rights reserved.
//

#include <iostream>
#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <math.h>
#include <map>
#include <string>
#include <cctype>
//#include "MED.h"
using namespace std;
//using namespace std::chrono;

//ifstream cin("bool.in");
//ofstream cout("bool.out");

int i, n;
string s, fis;
bool v[260];

bool AND();
bool OR();
bool NOT();
bool op();

bool OR() {
    bool rez = AND();
    if (s.substr(i, 2) == "OR" && i + 1 < s.size()) {
        rez |= AND();
        i += 2;
    }
    return rez;
}

bool AND() {
    bool rez = NOT();
    if (s.substr(i, 3) == "AND" && i + 2 < s.size()) {
        rez &= NOT();
        i += 3;
    }
    return rez;
}

bool NOT() {
    bool rez;
    if (s.substr(i, 3) == " NOT " && i + 2 < s.size()) {
        rez = !NOT();
        i += 3;
    } else
        rez = op();
    return rez;
}
 
bool op() {
    bool rez;
    if (s[i] == '(') {
        i++;
        rez = OR();
        i++;
    } else if (s.substr(i, 4) == "TRUE" && i + 3 < s.size()) {
        rez = 1;
        i += 4;
    } else if (s.substr(i , 5) == "FALSE" && i + 4 < s.size()) {
        rez = 0;
        i += 5;
    } else {
        rez = v[s[i]];
        i++;
    }
    return rez;
}

int main() {
//    auto start = high_resolution_clock::now();
    getline(cin, s);
    cin >> n;
    char c;
    while (n != 0) {
        cin >> c;
        v[c] = !v[c];
        i = 0;
        cout << OR();
        n--;
    }
//    auto stop = high_resolution_clock::now();
//       auto duration = duration_cast<microseconds>(stop - start);
//       cout << "Time taken by function: "
//       << duration.count() << " microseconds" << endl;
    return 0;
}

//    auto start = high_resolution_clock::now();
    
    
    
//    auto stop = high_resolution_clock::now();
//    auto duration = duration_cast<microseconds>(stop - start);
//    cout << "Time taken by function: "
//    << duration.count() << " microseconds" << endl;
//