QOJ.ac

QOJ

حد الوقت: 4 s حد الذاكرة: 1024 MB مجموع النقاط: 100

#9163. 文本编辑器

الإحصائيات

Robert 正在参加 CEOI 2024。他几乎已经完成了当天最难的一道题的解法,不仅如此,他确信这道题能拿 100 分!但有一个小问题:他打错了一个字!更糟糕的是,他自 2008 年以来一直使用的心爱鼠标似乎终于坏了,完全没有反应。因此,他必须使用键盘上的方向键导航到错别字处。

Robert 的程序有 $N$ 行,长度分别为 $l_1, l_2, \dots, l_N$。Robert 的程序总是以一个空行结束,因此 $l_N = 0$。光标可以放置在两个字符之间,也可以放置在行的开头或结尾。因此,第 $i$ 行有 $l_i + 1$ 个可能的光标位置(称为列),编号从 $1$ 到 $l_i + 1$。例如,光标位于第 $2$ 行第 $6$ 列的样子如下:

Robert 想要将光标从第 $s_l$ 行第 $s_c$ 列移动到第 $e_l$ 行第 $e_c$ 列。他想知道完成此操作所需的最少按键次数。

水平方向键很简单。按下 left 会将光标移动到前一列,除非光标位于行首,这种情况下它会移动到上一行的末尾。同样,按下 right 会将光标移动到下一列,或者如果光标位于行尾,则移动到下一行的开头。

在文件最开头按下 left 或在文件最末尾按下 right 不会有任何效果。

垂直方向键稍微复杂一些。按下 up 会将光标移动到上一行,按下 down 会将光标移动到下一行,且不改变列号。但是,如果这会导致光标超出新行的末尾,光标将跳转到该行的末尾。

如果按下 updown 会使光标移动到不存在的行,则光标不会移动。

输入格式

第一行包含整数 $N$ —— Robert 程序中的行数。 第二行包含两个空格分隔的整数 $s_l$ 和 $s_c$ —— 初始光标位置。 同样,第三行包含两个整数 $e_l$ 和 $e_c$ —— 目标光标位置。 第四行包含 $N$ 个空格分隔的整数 $l_1, l_2, \dots, l_N$ —— 每一行的长度。

输出格式

你的程序应输出一行,包含一个整数 —— 将光标从 $(s_l, s_c)$ 移动到 $(e_l, e_c)$ 所需的最少按键次数。

样例

样例 1

输入:

5
3 1
2 8
7 10 9 9 0

输出:

3

样例 2

输入:

5
1 20
3 25
25 10 40 35 0

输出:

16

数据范围

  • $1 \le N \le 10^6$
  • $0 \le l_i \le 10^9$ (对于每个 $1 \le i \le N$)
  • $l_N = 0$
  • $1 \le s_l, e_l \le N$
  • $1 \le s_c \le l_{s_l} + 1$
  • $1 \le e_c \le l_{e_l} + 1$

子任务

  1. (5 分) $N \le 2$
  2. (14 分) $N \le 1\,000, l_i \le 5\,000$ (对于每个 $1 \le i \le N$)
  3. (26 分) $N \le 1\,000$
  4. (11 分) $l_i = l_j$ (对于每个 $1 \le i, j \le N - 1$)
  5. (44 分) 无附加限制

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.