#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int long long
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define FORD(i, a, b) for (int i = (b); i >= (a); i --)
#define REP(i, a) for (int i = 0; i < (a); ++i)
#define REPD(i, a) for (int i = (a) - 1; i >= 0; --i)
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
constexpr ll LINF = (1ll << 60);
constexpr int INF = (1ll << 30);
constexpr int Mod = 1e9 + 7;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
/*
Phu Trong from Nguyen Tat Thanh High School for gifted student
*/
template <class X, class Y>
bool minimize(X &x, const Y &y){
X eps = 1e-9;
if (x > y + eps) {x = y; return 1;}
return 0;
}
template <class X, class Y>
bool maximize(X &x, const Y &y){
X eps = 1e-9;
if (x + eps < y) {x = y; return 1;}
return 0;
}
#define MAX 200005
int N, numQuery;
string s[3], now;
char other(char a, char b){
if(a != 'J' and b != 'J') return 'J';
if(a != 'O' and b != 'O') return 'O';
if(a != 'I' and b != 'I') return 'I';
}
string cross(string &a, string &b){
assert((int)a.size() == (int)b.size());
int n = (int)a.size() - 1;
string nw = "@";
for (int i = 1; i <= n; ++i){
if(a[i] == b[i]) nw += a[i];
else nw += other(a[i], b[i]);
}
return nw;
}
namespace SUBTASK_3{
bool check(void){
return N <= 100;
}
queue<string> q;
map<string, int> reach;
void main(void){
reach[s[0]] = reach[s[1]] = reach[s[2]] = true;
q.emplace(s[0]);
q.emplace(s[1]);
q.emplace(s[2]);
while(q.size()){
string now = q.front(); q.pop();
REP(i, 3){
string nxt = cross(now, s[i]);
if(!reach.count(nxt)){
q.emplace(nxt);
reach[nxt] = true;
}
}
}
cin >> numQuery >> now;
now = '@' + now;
if(reach.count(now)) cout << "Yes\n";
else cout << "No\n";
for (int qu = 1; qu <= numQuery; ++qu){
int l, r; char c; cin >> l >> r >> c;
FOR(i, l, r) now[i] = c;
if(reach.count(now)) cout << "Yes\n";
else cout << "No\n";
}
}
}
void process(void){
cin >> N;
REP(i, 3) {
cin >> s[i];
s[i] = '@' + s[i];
}
if(SUBTASK_3 :: check()){
SUBTASK_3 :: main();
return;
}
}
signed main(){
#define name "Whisper"
cin.tie(nullptr) -> sync_with_stdio(false);
// freopen(name".inp", "r", stdin);
// freopen(name".out", "w", stdout);
process();
return (0 ^ 0);
}
Compilation message (stderr)
Main.cpp: In function 'char other(char, char)':
Main.cpp:46:1: warning: control reaches end of non-void function [-Wreturn-type]
46 | }
| ^
# | 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... |