atcoder#ARC148B. [ARC148B] dp
[ARC148B] dp
配点 : 点
問題文
d
と p
からなる長さ の文字列 に対して、 を 度回転した文字列を と表します。より厳密には、 を次の条件を満たす文字列として定めます。
- は
d
とp
からなる長さ の文字列である。 - であるすべての整数 について、 の 文字目は の 文字目と異なる。
例えば ddddd
のとき ppppp
, dpdppp
のとき dddpdp
です。
d
と p
からなる長さ の文字列 が与えられます。
あなたは次の操作を 0 回以上 1 回以下行うことができます。
- である整数の組 を つ選び、 の 文字目から 文字目までからなる部分文字列を とする。そして、 の 文字目から 文字目までを に置き換える。
例えば dpdpp
, の場合、 pdp
, dpd
なので は ddpdp
に変化します。
最終的な としてあり得る文字列のうち辞書順最小のものを出力してください。
辞書順とは?
文字列 が文字列 より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、 はそれぞれ の長さを表します。
- かつ 。
- ある整数 が存在して、下記の つがともに成り立つ。
- が よりアルファベット順で小さい文字である。
制約
- は
d
とp
からなる長さ の文字列 - は整数
入力
入力は以下の形式で標準入力から与えられる。
出力
答えを出力せよ。
6
dpdppd
dddpdd
とします。 pdpp
, ddpd
なので、操作後の は dddpdd
になります。
得られる文字列のうち dddpdd
が辞書順最小なので、これを出力します。
3
ddd
ddd
操作を行わないことが最適な場合もあります。
11
ddpdpdppddp
ddddpdpdddp