#3103. 文本编辑器

文本编辑器

题目描述

Vasya 不情愿地敲着键盘,挤牙膏式地写着他那篇关于荷马史诗《奥德赛》的作文……他要怎么向文学老师解释自己并不想当作家?他其实想当程序员。所以他很乐意写程序,但一点也不乐意写作文。

正当 Vasya 在想象的黑暗池塘里钓句子时,他突然好奇:把光标从一个位置移到另一个位置,最少要按多少次键?

把他的问题严格描述如下:Vasya 正用一个文本编辑器打字。他已经写了 nn 行,第 ii 行有 aia_i 个字符(含空格)。若某行有 kk 个字符,则该行共有 k+1k+1 个可以放光标的位置:每个字符之前,以及行尾所有字符之后。于是光标的位置由一对整数 (r,c)(r, c) 确定,其中 rr 是行号,cc 是光标在该行中的位置(位置从行首起从 1 开始编号)。

Vasya 移动光标不用鼠标,只用 "Up"、"Down"、"Right"、"Left" 四个键。每按一次,光标就朝对应方向移动。设按键前光标在位置 (r,c)(r, c):

  • "Up":若光标在第一行(r=1r=1),光标不动;否则移到上一行(第 r−1r-1 行)的同一位置。此时若上一行太短、容不下位置 cc,光标就移到第 r−1r-1 行的最后一个位置;
  • "Down":若光标在最后一行(r=nr=n),光标不动;否则移到下一行(第 r+1r+1 行)的同一位置。此时若下一行太短、容不下位置 cc,光标就移到第 r+1r+1 行的最后一个位置;
  • "Right":若光标在本行可以向右移动(c<ar+1c \lt a_r+1),则向右移到位置 c+1c+1;否则说明光标已在行尾,按 "Right" 不动;
  • "Left":若光标在本行可以向左移动(c>1c \gt 1),则向左移到位置 c−1c-1;否则说明光标已在行首,按 "Left" 不动。

已知文本文件的行数和每行的字符数,求把光标从位置 (r1,c1)(r_1, c_1) 移到 (r2,c2)(r_2, c_2) 最少需要按多少次键。

输入格式

输入的第一行包含整数 nn(1≤n≤1001 \le n \le 100),表示文件行数。第二行包含 nn 个用单个空格隔开的整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai≤1050 \le a_i \le 10^5)。第三行包含四个整数 r1,c1,r2,c2r_1, c_1, r_2, c_2(1≤r1,r2≤n1 \le r_1, r_2 \le n,1≤c1≤ar1+11 \le c_1 \le a_{r_1}+1,1≤c2≤ar2+11 \le c_2 \le a_{r_2}+1)。

输出格式

输出一个整数——把光标从位置 (r1,c1)(r_1, c_1) 移到 (r2,c2)(r_2, c_2) 最少需要按键的次数。

4
2 1 6 4
3 4 4 2
3
4
10 5 6 4
1 11 4 2
6
3
10 1 10
1 10 1 1
3

说明/提示

第一组样例的编辑器有四行。把光标在行内的可能位置记为数字,字母 s 表示光标初始位置,t 表示目标位置,则编辑器中所有可能的光标位置如下表:

123 12 123s567 1t345

该样例的一种可行方案是:"Left"、"Down"、"Left"。