P10803 [CEOI 2024] 文本编辑器

题目描述

**题目译自 [CEOI 2024](https://ceoi2024.fi.muni.cz/) Day1 T3「[Text editor](https://ceoi2024.fi.muni.cz/page/tasks/statements/editor.pdf)」** 罗伯特正在参加 2024 年 CEOI 编程竞赛。他几乎完成了当天最难的一道题的代码,而且他确信能拿满分!但问题出在一个小小的细节上:他打错了一个字!更糟糕的是,他从 2008 年就开始使用的那只心爱鼠标彻底罢工了,一点反应也没有。因此,他只能用键盘上的方向键移动光标去找到那个错别字。 罗伯特的程序有 $N$ 行,每行的长度分别为 $l_1, l_2, \ldots , l_N$。罗伯特总是以空行作为程序的结尾,所以 $l_N = 0$。光标可以放在两个字符之间,也可以放在行的开头或结尾。因此,第 $i$ 行有 $l_i + 1$ 个可用的光标位置(称为列),编号从 $1$ 到 $l_i + 1$。例如,下面是光标位于第 $2$ 行第 $6$ 列的情况: ![](https://cdn.luogu.com.cn/upload/image_hosting/4p5zr0jw.png) 罗伯特想把光标从第 $s_l$ 行的第 $s_c$ 列移动到第 $e_l$ 行的第 $e_c$ 列。他想求出最少需要的按键次数。 水平方向键的使用比较简单。按下 **左键** 会将光标移动到前一列,除非光标位于行首,则会移动到前一行的行尾。类似地,按下 **右键** 会将光标移动到后一列,或者如果光标位于行尾,则会移动到下一行的行首。 例如,**左键** 的移动可以像这样: ![](https://cdn.luogu.com.cn/upload/image_hosting/lig1idke.png) 而 **右键** 的移动可以像这样: ![](https://cdn.luogu.com.cn/upload/image_hosting/zy9hu3u5.png) 在文件的最开头按下 **左键** 或在文件的最结尾按下 **右键** 都不会有任何效果。 垂直方向键的使用稍微复杂一些。按下 **上键** 会将光标移动到上一行,按下 **下键** 会将光标移动到下一行,列数不会改变。但是,如果这样会使光标超出新行的结尾,光标则会跳到该行末尾。 例如,**上键** 的移动可以像这样: ![](https://cdn.luogu.com.cn/upload/image_hosting/2zixw04v.png) 而 **下键** 的移动可以像这样: ![](https://cdn.luogu.com.cn/upload/image_hosting/wr5ld99o.png) 如果按下 **上键** 或 **下键** 会把光标移动到不存在的行,则光标根本不会移动。

输入格式

输入的第一行包含一个整数 $N$,表示罗伯特程序的行数。 第二行包含两个空格隔开的整数 $s_l$ 和 $s_c$,表示初始光标位置。 类似地,第三行包含两个空格隔开的整数 $e_l$ 和 $e_c$,表示目标光标位置。 第四行包含 $N$ 个空格隔开的整数 $l_1, l_2, \ldots , l_N$,表示每行的长度。

输出格式

输出一行包含一个整数,表示将光标从 $(s_l, s_c)$ 移动到 $(e_l, e_c)$ 最少的按键次数。

说明/提示

**样例解释 1** 罗伯特可以通过按顺序按 **上键**、**左键** 和 **下键**三个键来将光标移动到目标位置: ![](https://cdn.luogu.com.cn/upload/image_hosting/wsz8bcr4.png) 或者,他也可以通过按 **左键**、**上键** 和 **下键** 来同样快速地将光标移动到目标位置。 **样例解释 2** 可以很容易地证明,不可能使用最多两个按键到达目标位置。 最短的可能按键序列是按两次 **下键** 然后按十四次 **右键**。 对于所有输入数据,满足: - $1 \leq N \leq 10^6$ - $0 \leq l_i \leq 10^9\ (1\leq i\leq n)$ - $l_N = 0$ - $1 \leq s_l, e_l \leq N$ - $1 \leq s_c \leq l_{s_l} + 1$ - $1 \leq e_c \leq l_{e_l} + 1$ 详细子任务附加限制及分值如下表所示。 | 子任务 | 附加限制 | 分值 | | :--: | :--: | :--: | | $1$ | $N \leq 2$ | $5$ | | $2$ | $N \leq 1\,000, l_i \leq 5\,000\ (1 \leq i \leq N)$| $14$ | | $3$ | $N \leq 1\,000$ | $26$ | | $4$ | $l_i = l_j\ (1 \leq i, j \leq N - 1)$ | $11$ | | $5$ | 无附加限制| $44$ |