#B010. 一箭多雕

一箭多雕

【问题描述】

小明喜欢武侠小说,在武侠世界里,他不但练就了一箭双雕的能力,还可以一箭多雕。

现在所有雕在一条直线上从左到右排列,但是他们的高度不同。而小明想要把他们都射 下来。小明使用的是一种特殊的弓箭,他可以将弓箭射到任意一个高度为 HH 的雕,当射中 一个高度为 HH 的雕后,弓箭的高度会下降到 H1H-1,再从左到右飞行,直到射到高度为 H1H-1 的大雕,再降低 11 的高度,直到飞出大雕的队列。

由于弓箭数量有限,小明想要知道,最少用多少的弓箭,就可以射下所有的大雕。

【输入】

第一行一个整数,nn 表示直线上的大雕数量。

第二行 nn 个整数,表示从左到右每个大雕的高度。

【输出】

输出一个整数,表示最少用的弓箭数量。

【输出输出样例 1】

arrows.in

5
2 1 5 4 3

arrows.out

2

【样例解释】

第一箭射向第一个大雕,射中后高度下降到 11 ,会射中第二只大雕。

第二箭射向第三个大雕,依次射中高度为 5,4,35,4,3 的三只大雕。

【输出输出样例 2】

arrows.in

5
1 2 3 4 5

arrows.out

5

【样例解释】

55 只大雕,分别使用 11 个弓箭。

【输出输出样例 3】

arrows.in

5
4 5 2 1 4

arrows.out

3

【样例解释】

第一箭射向第一个大雕,射中后高度下降到 33

第二箭射向第二个大雕,射下高度为 5544 的大雕。

第三箭射向第三个大雕,射下高度为 2211 的大雕。

【数据范围】

30%30\%的数据,n5000n\le5000, 大雕的高度 10000\le10000

70%70\%的数据,n1000000n\le1000000, 大雕的高度 1000000\le1000000

100%100\%的数据,n1000000n\le1000000, 大雕的高度 1000000000\le1000000000