atcoder#ARC113E. [ARC113E] Rvom and Rsrev

[ARC113E] Rvom and Rsrev

配点 : 800800

問題文

ab からなる文字列 SS が与えられます。SS に以下の操作を 00 回以上繰り返してできる辞書順最大の文字列を求めてください。

  • 同一の文字である SS22 箇所の文字を選ぶ。それらの間の文字列を前後反転させ、選んだ 22 文字を削除する。すなわち、SSii 文字目を sis_i と表すことにすれば、si=sjs_i=s_j なる i<ji < j を選んで SS を $s_1\dots s_{i-1}s_{j-1}\dots s_{i+1}s_{j+1}\dots s_{|S|}$ で置き換える。

なお、この問題ではテストケースが TT 個与えられます。ii 個目のテストケースは文字列 SiS_i で表され、S=SiS=S_i に対して上記の問題を解く問題です。

制約

  • 1T2×1051 \leq T \leq 2\times 10^5
  • 1Si(i=1,,T)1 \leq |S_i|\quad (i=1,\dots, T)
  • 1S1++ST2×1051 \leq |S_1| + \dots + |S_T| \leq 2\times 10^5
  • SiS_iab からなる

入力

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

TT

S1S_1

\vdots

STS_T

出力

TT 行出力せよ。ii 行目には、SiS_i に操作を 00 回以上繰り返してできる辞書順最大の文字列を出力せよ。

20
abbaa
babbb
aabbabaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbabaaaaabbaababaaabbabbbbbaaaaa
babbbaaaabaababbbabaabaaaaababaa
bbaababababbbaaabaabababaabbabab
abaabbabaabaaaaabaaaabbaabaaaaab
aabababbabbabbabbaaaabbabbbabaab
aabababbabbbbaaaabbaaaaabbaaaabb
abbbbaabaaabababaaaababababbaabb
aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb
aaaaaaaaaabbbbbbbbbbbbbbbbbbbbbb
abababaaababaaabbbbbaaaaaaabbbbb
aabbaaaaababaabbbbbbbbbaabaaabbb
babababbababbbababbbbbababbbabbb
bbbbababbababbbabababbabbabbbbbb
aaaaaaaaaaaaaaaaababababbbabbbbb
aabababbabbabababababababbbbabbb
bba
bba
bbba
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbaaaaaaaa
bbbbbbbbbbbbbaaaaaaa
bbbbbbbbbbbbbbbb
bbbbbbbbbb
bbbbbbbbbbbbbbbbab
bbbbbbbbbbbbbb
bbbbbbbbbbbbbabb
abbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbaaaaaaaaa
bbbbbbbbbbbbbbbaaaaa
bbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbba
bbbbbbbbbaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbba
  • 11 個目のテストケースは、11 文字目と 44 文字目に対して操作を行うことで SSbba にできます。
  • 22 個目のテストケースは、11 文字目と 55 文字目に対して操作を行うことで SSbba にできます。
  • 33 個目のテストケースは、11 文字目と 22 文字目に対して操作を行うことで SSbbabaa にでき、その後 33 文字目と 55 文字目に対して操作を行うことで SSbbba にできます。