rt
拍了几万组都没问题,但是不知道为什么只能过一个点qwq
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, m;
char s[N];
char pre[N];
signed main(){
cin >> (s + 1) >> m;
n = strlen(s + 1);
pre[0] = ' ';
for(int i = 1; i <= n; ++i){
if(pre[i - 1] == ' ') pre[i] = s[i];
else if(pre[i - 1] == 'C'){
if(s[i] == 'C') pre[i] = ' ';
if(s[i] == 'O') pre[i] = 'W';
if(s[i] == 'W') pre[i] = 'O';
}else if(pre[i - 1] == 'O'){
if(s[i] == 'c') pre[i] = 'W';
if(s[i] == 'O') pre[i] = ' ';
if(s[i] == 'W') pre[i] = 'C';
}else if(pre[i - 1] == 'W'){
if(s[i] == 'c') pre[i] = 'O';
if(s[i] == 'O') pre[i] = 'C';
if(s[i] == 'W') pre[i] = ' ';
}
}
while(m--){
int l, r; cin >> l >> r;
char c1 = pre[l - 1], c2 = pre[r];
int flag = 0;
if((c1 == ' ' && c2 == 'C') || (c1 == 'C' && c2 == ' ')) flag = 1;
if((c1 == 'O' && c2 == 'W') || (c1 == 'W' && c2 == 'O')) flag = 1;
if(flag) cout << "Y";
else cout << "N";
}
return 0;
}