比赛场次 216
比赛名称 20131014
比赛状态 已结束比赛成绩
开始时间 2013-10-14 18:50:00
结束时间 2013-10-14 20:50:00
开放分组 全部用户
注释介绍
题目名称 迷之阶梯
输入输出 ladder.in/out
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分

迷之阶梯

★   输入文件:ladder.in   输出文件:ladder.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

在经过地球防卫小队的数学家连续多日的工作之后,外星人发的密码终于得以破解。它告诉我们在地球某一处的古老遗迹中,存在有对抗这次灾难的秘密道具。防卫小队立刻派出了一个直升机小分队,迅速赶到了这处遗迹。要进入遗迹,需要通过一段迷之阶梯。登上阶梯必须要按照它要求的方法,否则就无法登上阶梯。它要求的方法有以下三个限制:

1.如果下一步阶梯的高度只比当前阶梯高1,则可以直接登上。

2.除了第一步阶梯外,都可以从当前阶梯退到前一步阶梯。

3.当你连续退下k步后,你可以一次跳上不超过$当前阶梯高度+2^k$的阶梯。比如说你现在位于第j步阶梯,并且是从第j+k步阶梯退下来的,那么你可以跳到高度不超过$当前阶梯高度+ 2^k$的任何一步阶梯。跳跃这一次只算一次移动。

开始时我们在第一步阶梯。由于时间紧迫,我们需要用最少的移动次数登上迷之阶梯。请你计算出最少的移动步数。

【输入格式】

第1行:一个整数N,表示阶梯步数。

第2行:N个整数,依次为每层阶梯的高度,保证递增。

【输出格式】

第1行:一个整数,如果能登上阶梯,输出最小步数,否则输出-1。

【样例输入】

5
0 1 2 3 6

【样例输出】

7

【数据范围】

对于50%的数据:1≤N≤20。 

对于100%的数据:1≤N≤200。

每步阶梯高度不超过2^31-1。