#include <bits/stdc++.h>
using namespace std;
int main() {
int size;
cin >> size;
string a;
string b;
string c;
cin >> a;
cin >> b;
cin >> c;
unordered_set<string> st;
st.insert(a);
st.insert(b);
st.insert(c);
queue<string> q;
q.push(a);
q.push(b);
q.push(c);
while(!q.empty()) {
string s = q.front();
q.pop();
for(auto it = st.begin(); it != st.end(); it++) {
string t = *it;
string u = a;
for(int i = 0; i < a.size(); i++) {
if(s[i] == t[i])
u[i] = s[i];
else {
if(s[i] != 'J' && t[i] != 'J')
u[i] = 'J';
if(s[i] != 'O' && t[i] != 'O')
u[i] = 'O';
if(s[i] != 'I' && t[i] != 'I')
u[i] = 'I';
}
}
if(st.find(u) == st.end()) {
st.insert(u);
q.push(u);
// cout << st.size() << '\n';
}
}
}
int Q;
cin >> Q;
string query;
cin >> query;
if(st.find(query) == st.end()) {
cout << "No\n";
}
else {
cout << "Yes\n";
}
for(int i = 0; i < Q; i++) {
int x, y;
char z;
cin >> x;
cin >> y;
cin >> z;
for(int j = x - 1; j <= y - 1; j++) {
query[j] = z;
}
cout << (st.find(query) == st.end() ? "No" : "Yes") << "\n";
}
return 0;
}
# | 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... |