选定一段连续子串,对其中每个字符同时后继 k 次(z 的后继是 a),使整串字典序最大。
链路侧值班同学拿到一条长度为 m 的报文 w,其中只含小写字母。手册规定:可以选定一段非空连续子串,对该段内每个字符同时做若干次(可以为 0 次)后继变换。后继变换把字母改成字母表中的下一个,并且
值班目标是让整条报文在字典序下尽可能大:从左到右比较第一个不同位置,字母更大者更优。子串指原串中连续的一段(可以取整段)。
请给出操作后能得到的字典序最大字符串。
约束:1 ≤ m ≤ 200000,w 仅由小写字母构成。
第一行一个整数 m(1 ≤ m ≤ 200000),表示报文长度。
第二行一个长度为 m 的字符串 w,仅含小写字母。
输出一个字符串,表示操作后字典序最大的报文。
输入
5
cccab
输出
zzzxy
说明
从左起第一个字符不是 z。对整段 cccab 同时后继 23 次:c 变为 z,a 变为 x,b 变为 y,得到 zzzxy。若只改前缀 ccc,得到 zzzab,在第四位劣于 zzzxy。
输入
6
zzabcz
输出
zzzbcz
说明
前缀 zz 已经是最大字母,不能再后继(否则变成 a)。从下标 3 的 a 起只抬升这一位(后继 25 次),得到 zzzbcz。若把后面的 b 一并抬升,b 会越过 z 变成很小的字母,字典序更差。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.