This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
string sa, sb, sc;
string cross(string x, string y){
if(x.empty()) return y;
else if(y.empty()) return x;
int n = x.size();
string ret;
for(int i = 0; i < n; i++){
if(x[i] == y[i]) ret.push_back(x[i]);
else ret.push_back(x[i] ^ y[i] ^ 'J' ^ 'O' ^ 'I');
}
return ret;
}
set<string> rec(int left, string cur = ""){
if(left == 0) return {cur};
set<string> s = {cur}, t;
t = rec(left-1, cross(cur, sa));
s.insert(t.begin(), t.end());
t = rec(left-1, cross(cur, sb));
s.insert(t.begin(), t.end());
t = rec(left-1, cross(cur, sc));
s.insert(t.begin(), t.end());
return s;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n >> sa >> sb >> sc;
set<string> pool = rec(4);
int q;
cin >> q;
string t;
cin >> t;
cout << (pool.count(t) ? "Yes" : "No") << endl;
while(q--){
int l, r;
char c;
cin >> l >> r >> c;
for(int i = l; i <= r; i++){
t[i-1] = c;
}
cout << (pool.count(t) ? "Yes" : "No") << endl;
}
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... |