回弹光标
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
回弹光标
题目描述
有一条长度为 n 的字符带,位置自左向右依次编号为 1 到 n。初始时,字符带上的每个位置均为字符 'a'。
现有一个光标,初始停留在位置 p,并且拥有一个“移动朝向”。初始朝向的确定规则如下:
- 若
n = 1,则光标永远停留在位置 1,没有移动朝向的概念。 - 若
n > 1:当初始位置p = n(即位于最右端)时,朝向为向左;其余所有情况初始朝向均为向右。
接下来将进行 q 次操作,光标的朝向状态会在所有操作间持续继承。每次操作会给出一个字符 op(+ 或 -)和一个非负整数 x,表示一次完整的动作流程:
- 移动与回弹:光标沿着当前朝向逐格移动,共移动
x步。在移动的每一步过程中,一旦光标到达位置 1,其后续朝向立即变为向右;一旦到达位置n,其后续朝向立即变为向左。光标会在不断的“撞边回弹”中完成这x步的移动。 - 字符修改:在移动完
x步并最终停下后,仅对当前停留位置的字符执行一次修改:- 若
op为+,将该位置的字符在字母表中顺延一位(特别地,'z'顺延变为'a')。 - 若
op为-,将该位置的字符在字母表中逆延一位(特别地,'a'逆延变为'z')。
- 若
特别说明:当 x = 0 时,光标不发生任何移动,朝向也不改变,但仍需对当前停留位置的字符执行一次上述修改。
请你输出所有 q 次操作结束后,光标所在的最终位置,以及整条字符带的内容。
输入格式
第一行包含三个整数 、、。
接下来 行,每行包含一个字符 op 和一个整数 。
数据范围:
输出格式
第一行输出一个整数,表示最终位置。
第二行输出一个长度为 的字符串。
输入输出样例 #1
输入 #1
5 2 5
+ 3
- 1
+ 5
+ 0
- 7
输出 #1
2
azczb