// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
using namespace std;
char get(char a, char b) {
if (a == b) return a;
return a ^ b ^ '0' ^ '1' ^ '2';
}
string get(string a, string b) {
string res = "";
for (int i = 0; i < a.size(); ++i) {
res += get(a[i], b[i]);
}
return res;
}
string read() {
string s;
cin >> s;
for (auto & x: s) {
if (x == 'J') x = '0';
else if (x == 'O') x = '1';
else x = '2';
}
return s;
}
void solve() {
int n;
cin >> n;
vector<string> s(3);
for (auto & x: s) {
x = read();
}
for (int i = 0; i < 3; ++i) {
s.push_back(get(s[i], s[(i + 1) % 3]));
}
for (int i = 0; i < 3; ++i) {
s.push_back(get(s[3 + i], s[3 + (i + 1) % 3]));
}
sort(s.begin(), s.end());
s.erase(unique(s.begin(), s.end()), s.end());
for (auto x: s) {
// cout << x << '\n';
}
int q;
cin >> q;
string t = read();
auto can_get = [&] (string z) {
for (auto x: s) {
if (x == z) {
return "Yes";
}
}
return "No";
};
cout << can_get(t) << '\n';
while (q--) {
int l, r;
string s;
cin >> l >> r;
s = read();
for (int i = l - 1; i <= r - 1; ++i) {
t[i] = s[0];
}
cout << can_get(t) << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
solve();
// vector<string> v;
// const int N = 20;
// for (int i = 0; i < 3; ++i) {
// string s = "";
// for (int j = 0; j < N; ++j) {
// s += '0' + (rand() % 3);
// }
// v.push_back(s);
// }
// cout << v[0] << ' ' << v[1] << ' ' << v[2] << '\n';
// int T = 3000;
// for (int t = 0; t < T; ++t) {
// int a = rand() % v.size();
// int b = rand() % v.size();
// string ss = get(v[a], v[b]);
// v.push_back(ss);
// sort(v.begin(), v.end());
// v.erase(unique(v.begin(), v.end()), v.end());
// }
// cout << v.size() << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |