Submission #951662

#TimeUsernameProblemLanguageResultExecution timeMemory
951662arbuzickCrossing (JOI21_crossing)C++17
26 / 100
7049 ms3208 KiB
#include <bits/stdc++.h>

using namespace std;

void solve() {
    int n;
    cin >> n;
    string a, b, c;
    cin >> a >> b >> c;
    auto cross = [&](string a, string b) {
        string c = "";
        for (int i = 0; i < n; ++i) {
            if (a[i] == b[i]) {
                c += a[i];
            } else {
                if (a[i] != 'J' && b[i] != 'J') {
                    c += 'J';
                } else if (a[i] != 'O' && b[i] != 'O') {
                    c += 'O';
                } else {
                    c += 'I';
                }
            }
        }
        return c;
    };
    vector<string> nw = {a, b, c};
    for (int i = 0; i < (int)nw.size(); ++i) {
        for (int j = 0; j < i; ++j) {
            string add = cross(nw[i], nw[j]);
            if (!count(nw.begin(), nw.end(), add)) {
                nw.push_back(add);
            }
        }
    }
    int q;
    cin >> q;
    string t;
    cin >> t;
    if (count(nw.begin(), nw.end(), t)) {
        cout << "Yes\n";
    } else {
        cout << "No\n";
    }
    while (q--) {
        int l, r;
        char ch;
        cin >> l >> r >> ch;
        l--;
        for (int i = l; i < r; ++i) {
            t[i] = ch;
        }
        if (count(nw.begin(), nw.end(), t)) {
            cout << "Yes\n";
        } else {
            cout << "No\n";
        }
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...