#P5071. 「FJSC2018PJD6T2」新飞行棋
「FJSC2018PJD6T2」新飞行棋
Description
期末考试终于结束了。Andy同学感觉松了一口气,他决定重温小时候的快乐时光——下飞行棋。
但是他弄丢了传统飞行棋需要的骰子,因此他发明了一种新型的飞行棋游戏,规则如下:棋盘上有n个格子,由近到远分别编号为 到 。对于 ,第 个格子上写着一个正整数 。当玩家处于第 个格子时,他可以选择往后走 步,或者往前倒退 步。当然如果 ,那么他就只能选择后退;同理如果 ,那么他就只能选择前进。保证不会出现既不能前进又不能后退的格子。
Andy学完编程后对一个问题很感兴趣:从编号 出发,至少需要经过几把,可以到达 点?(例如在 点选择往前走 步,称之为一把)。
Input Format
从文件fly.in
中读取数据。
第一行三个整数,分别为 ,, 意义如题面所述。
第二行 个正整数,第 个数为 。
Output Format
输出到文件fly.out
中去。
一个数,为最少经过的把数。如果 无法到达 ,输出 。
Sample
样例输入1
6 6 4
1 2 2 3 1 2
样例输出1
1
Hint
对于前 的数据,;
对于前 的数据,;
对于另外 的数据, 无法到达 ;
对于 的数据,;