atcoder#ARC136A. [ARC136A] A ↔ BB

[ARC136A] A ↔ BB

配点 : 300300

問題文

A, B, C からなる長さ NN の文字列 SS が与えられます.

あなたは,SS に対して以下の 22 種類の操作を好きな順序で好きな回数行うことができます.

  • SS の中で A を選び,消す. 文字を消した位置に,新たに BB を書き込む.
  • SS の中で隣接する 22 文字であって,BB となっているものを選び,消す. 文字を消した位置に,新たに A を書き込む.

操作を終えたあとの SS としてあり得る文字列のうち,辞書順最小のものを求めてください.

辞書順とは?

辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、相異なる文字列 SS と文字列 TT の大小を判定するアルゴリズムを以下に説明します。

以下では SSii 文字目の文字を SiS_i のように表します。また、 SSTT より辞書順で小さい場合は S<TS \lt T 、大きい場合は S>TS \gt T と表します。

  1. SSTT のうち長さが短い方の文字列の長さを LL とします。i=1,2,,Li=1,2,\dots,L に対して SiS_iTiT_i が一致するか調べます。
  2. SiTiS_i \neq T_i である ii が存在する場合、そのような ii のうち最小のものを jj とします。そして、SjS_jTjT_j を比較して、 SjS_j がアルファベット順で TjT_j より小さい場合は S<TS \lt T 、大きい場合は S>TS \gt T と決定して、アルゴリズムを終了します。
  3. SiTiS_i \neq T_i である ii が存在しない場合、 SSTT の長さを比較して、SSTT より短い場合は S<TS \lt T 、長い場合は S>TS \gt T と決定して、アルゴリズムを終了します。

制約

  • 1N2000001 \leq N \leq 200000
  • SSA, B, C からなる長さ NN の文字列

入力

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

NN

SS

出力

答えを出力せよ.

4
CBAA
CAAB

以下のように操作すればよいです.

  • 最初,S=S=CBAA である.
  • SS33 文字目の A を消し,BB を書き込む.S=S=CBBBA となる.
  • SS2,32,3 文字目の BB を消し,A を書き込む.S=S=CABA となる.
  • SS44 文字目の A を消し,BB を書き込む.S=S=CABBB となる.
  • SS3,43,4 文字目の BB を消し,A を書き込む.S=S=CAAB となる.

SSCAAB より辞書順で小さい文字列にすることはできません. よって答えは CAAB になります.

1
A
A

一度も操作を行いません.

6
BBBCBB
ABCA