atcoder#ARC134B. [ARC134B] Reserve or Reverse
[ARC134B] Reserve or Reverse
配点 : 点
問題文
長さ の文字列 が与えられます。 の 文字目は と表します。
すぬけ君は以下の手順で を変化させます。
- の長さが偶数の(連続するとは限らない)部分列 を選ぶ( でも構わない)。
- と を入れ替える。
- と を入れ替える。
- と を入れ替える。
- と を入れ替える。
すぬけ君が手順を終えたあとの としてありうる文字列のうち、辞書順最小のものを求めてください。
辞書順とは?
辞書順とは簡単に説明すると「単語が辞書に載っている順番」を意味します。より厳密な説明として、相異なる文字列 と文字列 の大小を判定するアルゴリズムを以下に説明します。
以下では「 の 文字目の文字」を のように表します。また、 が より辞書順で小さい場合は 、大きい場合は と表します。
- と のうち長さが短い方の文字列の長さを とします。 に対して と が一致するか調べます。
- である が存在する場合、そのような のうち最小のものを とします。そして、 と を比較して、 がアルファベット順で より小さい場合は 、大きい場合は と決定して、アルゴリズムを終了します。
- である が存在しない場合、 と の長さを比較して、 が より短い場合は 、長い場合は と決定して、アルゴリズムを終了します。
制約
- は長さ の英小文字のみからなる文字列
入力
入力は以下の形式で標準入力から与えられる。
出力
すぬけ君が手順を終えたあとの としてありうる文字列のうち、辞書順最小のものを出力せよ。
4
dcab
acdb
- のとき、 と のみが入れ替わります。
- 手順を終えたあとの は
acdb
となり辞書順最小です。
2
ab
ab
- のとき、手順を終えたあとの は
ab
となり辞書順最小です。 - の長さが でもよいことに注意してください。
16
cabaaabbbabcbaba
aaaaaaabbbbcbbbc
17
snwfpfwipeusiwkzo
effwpnwipsusiwkzo