#joi2014yoc. [joi2014yo_c]超都観光 (Super Metropolis)
[joi2014yo_c]超都観光 (Super Metropolis)
问题
JOI 君要计划一次名为超都的城市观光旅行。
超都的道路被分割为沿南北方向延伸的 条道路和沿东西方向延伸的 条道路,形成了一个棋盘状的区域。
南北方向的 条道路按从西到东依次编号为 。而东西方向的 条道路则按从南到北依次编号为 。我们用 表示第 条南北道路和第 条东西道路的交叉点。
此外,如下图所示,每个交叉点除了最北面的道路上的交叉点和最东面的道路上的交叉点以外,都有一条通向东北的道路。同样地,每个交叉点也有一条通向西南的道路(除了最南面的道路上的交叉点和最西面的道路上的交叉点)。换句话说,如果交叉点 旁边有交叉点 , , , 的话,我们可以通过一条道路到达这些交叉点。此外,如果交叉点 , 存在的话,我们也可以通过一条道路到达这些交叉点。
JOI 君已经决定了旅行计划中 个观光景点的访问顺序。第 个()访问的景点位于交叉点 处。为了尽可能缩短旅行时间,JOI 君希望路过的道路数量最少。请编写一个程序来求出按照预定顺序访问景点时,所需路过的道路总数的最小值。
注意,旅行起点是交叉点 。同时,在旅行途中不得离开超都。此外,JOI 君可以经过景点所在的交叉点而不参观。
(补充说明) 关于“路过的道路总数”的说明。在旅行途中可以重复经过同一条道路多次。在这种情况下,“路过的道路总数”指的是对于每条道路,只计算重复次数。
输入
输入共有 行。
第一行为三个整数,用空格分隔,表示 的值 (,,)。
接下来的 行中,第 行()包含两个整数 ,以空格分隔。表示第 个访问的景点位于交叉点 处。
输出
输出一个整数,表示按照预定顺序访问景点时所需路过的总道路数的最小值。
输入示例 1
4 3 3
1 1
3 3
4 1
输出示例 1
5
在输入示例 中,我们可以按照 , , , , , 的顺序访问交叉点。
输入示例 2
4 3 5
1 3
4 3
2 2
2 2
1 3
输出示例 2
7
在输入示例 中,我们可能会重复访问相同的交叉点。