atcoder#AGC020D. [AGC020D] Min Max Repetition

[AGC020D] Min Max Repetition

配点 : 11001100

問題文

AABB を正の整数として、f(A,B)f(A, B) を以下の条件を満たす文字列と定めます。

  • f(A,B)f(A, B) の長さは A+BA + B である。
  • f(A,B)f(A, B) はちょうど AA 個の A とちょうど BB 個の B を含む。
  • f(A,B)f(A, B) の部分文字列であって同じ文字からなるもの(例: AAAAABBBB)のうち最長のものの長さは、上記の二つの条件が満たされるという前提のもとで最小である。
  • f(A,B)f(A, B) は、上記の三つの条件が満たされるという前提のもとで辞書順最小の文字列である。

例えば、f(2,3)f(2, 3) = BABABf(6,4)f(6, 4) = AABAABAABB となります。

次の QQ 個のクエリに答えてください。「f(Ai,Bi)f(A_i, B_i)CiC_i 文字目から DiD_i 文字目までの部分文字列(最初の文字を 11 文字目とする)を求めよ。」

制約

  • 1Q1031 \leq Q \leq 10^3
  • 1Ai,Bi5×1081 \leq A_i, B_i \leq 5 \times 10^8
  • 1CiDiAi+Bi1 \leq C_i \leq D_i \leq A_i + B_i
  • DiCi+1100D_i - C_i + 1 \leq 100
  • 入力値はすべて整数である。

部分点

  • 1Ai,Bi1031 \leq A_i, B_i \leq 10^3 を満たすデータセットに正答すると、500500 点が与えられる。

入力

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

QQ

A1A_1 B1B_1 C1C_1 D1D_1

A2A_2 B2B_2 C2C_2 D2D_2

::

AQA_Q BQB_Q CQC_Q DQD_Q

出力

入力で与えられた順に、各クエリ ii について、f(Ai,Bi)f(A_i, B_i)CiC_i 文字目から DiD_i 文字目までの部分文字列(最初の文字を 11 文字目とする)を個別の行に出力せよ。

5
2 3 1 5
6 4 1 10
2 3 4 4
6 4 3 7
8 10 5 8
BABAB
AABAABAABB
A
BAABA
ABAB