atcoder#ARC071C. [ARC071E] TrBBnsformBBtion

[ARC071E] TrBBnsformBBtion

配点 : 600600

問題文

A, B からなる文字列に対して、次の操作を考えます。

  1. 文字列中の 11 文字を選ぶ。それが A なら BB で、 B なら AA で置き換える。
  2. AAABBB であるような部分文字列を選び、消す。

例えば、ABA という文字列で 11 番目の操作を 11 文字目に対して行うと、 BBBA となります。 また、BBBAAAA に対して 22 番目の操作を 44 文字目から 66 文字目に対して行うと、 BBBA となります。

これらの操作を何回でも好きな順で行うことができます。

文字列 S,TS,Tqq 個のクエリ ai,bi,ci,dia_i, b_i, c_i, d_i が与えられます。 各クエリに対して、 SS の部分文字列 SaiSai+1...SbiS_{a_i} S_{{a_i}+1} ... S_{b_i}TT の部分文字列 TciTci+1...TdiT_{c_i} T_{{c_i}+1} ... T_{d_i} にすることができるか判定してください。

制約

  • 1S,T1051 \leq |S|, |T| \leq 10^5
  • S,TS,T は文字A,Bからなる。
  • 1q1051 \leq q \leq 10^5
  • 1aibiS1 \leq a_i \leq b_i \leq |S|
  • 1cidiT1 \leq c_i \leq d_i \leq |T|

入力

入力は以下の形式で標準入力から与えられる。

SS

TT

qq

a1a_1 b1b_1 c1c_1 d1d_1

......

aqa_q bqb_q cqc_q dqd_q

出力

qq 行出力せよ。 ii 行目には、 ii 番目のクエリに対する答えを出力せよ。 SaiSai+1...SbiS_{a_i} S_{{a_i}+1} ... S_{b_i}TciTci+1...TdiT_{c_i} T_{{c_i}+1} ... T_{d_i} にすることができる場合は YES を、 できない場合は NO を出力せよ。

BBBAAAABA
BBBBA
4
7 9 2 5
7 9 1 4
1 7 2 5
1 7 2 4
YES
NO
YES
NO

11 つめのクエリでは、 ABA という文字列を BBBA にできるか聞かれています。 問題文中で例に挙げたように、11 番目の操作で可能です。

22 つめのクエリでは、 ABA という文字列を BBBB にできるか聞かれています。 44 つめのクエリでは、 BBBAAAA という文字列を BBB にできるか聞かれています。 どちらも不可能です。

33 つめのクエリでは、BBBAAAA という文字列を BBBA にできるか聞かれています。 問題文中で例に挙げたように、22 番目の操作で可能です。

AAAAABBBBAAABBBBAAAA
BBBBAAABBBBBBAAAAABB
10
2 15 2 13
2 13 6 16
1 13 2 20
4 20 3 20
1 18 9 19
2 14 1 11
3 20 3 15
6 16 1 17
4 18 8 20
7 20 3 14
YES
YES
YES
YES
YES
YES
NO
NO
NO
NO