2130: 迷之阶梯

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:15 解决:6

题目描述

在经过地球防卫小队的数学家连续多日的工作之后,外星人发的密码终于得以破解。它告诉我们在地球某一处的古老遗迹中,存在有对抗这次灾难的秘密道具。防卫小队立刻派出了一个直升机小分队,迅速感到了这处遗迹。要进入遗迹,需要通过一段迷之阶梯。登上阶梯必须要按照它要求的方法,否则就无法登上阶梯。它要求的方法有以下三个限制: 1. 如果下一步阶梯的高度只比当前阶梯高1,则可以直接登上。 2. 除了第一步阶梯外,都可以从当前阶梯退到前一步阶梯。 3. 当你连续退下k后,你可以一次跳上不超过当前阶梯高度2^k的阶梯。比如说你现在位于第j步阶梯,并且是从第j + k步阶梯退下来的。那么你可以跳到高度不超过当前阶梯高度 + 2^k的任何一步阶梯。跳跃这一次只算一次移动。 开始时你在第1步阶梯。由于时间紧迫,我们需要你预先计算出登上迷之阶梯的最少移动次数。

输入

第1行:一个整数N,表示阶梯步数; 第2行:N个整数(每两个之间有1个空格),依次为每层阶梯的高度,保证递增。

输出

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

样例输入 复制

5 
0 1 2 3 6

样例输出 复制

7

提示

样例解释:

连续凳3步,再后退3步,然后直接跳上去。

数据限制:

对于50%的数据:1 <= N <= 20;

对于100%的数据:1 <= N <= 200;每步阶梯高度不超过2^31-1。