C0541 红军的突击行动


红军的突击行动

题目描述

在红军长征途中,先遣队发现前方狭长的山谷中,敌军沿路设立了 n 个连成一排的封锁据点。每个据点都有一定的驻军数量,我们用一个包含 n 个正整数的数组 a 来表示,其中 a[i] 代表第 i 个据点的敌军兵力。

为了以最小的代价突破封锁,红军指挥员制定了如下的“突击战术”:

首先,侦察兵会在当前剩余的所有据点中,找出兵力最多的那个据点作为主攻目标。如果兵力最多的据点有多个,为了尽可能向前推进,红军会选择最靠前(即数组中下标最大)的那个。

随后,红军发起突击,拿下该主攻据点,并顺势将它及其之后(下标>=它)的所有据点全部扫清。

请你编写程序计算,红军总共需要发起多少次“突击行动”,才能将所有据点全部拔除(即数组变为空)?

输入

第一行包含一个整数 n(数学公式: 1≤n≤10^5 ),表示初始时敌军据点的总数量。

第二行包含 n 个整数 数学公式: a1 ,a2 ,…,an(1≤ai≤10^9),依次表示从左到右每个据点的敌军兵力,数字之间用一个空格分隔。

输出

输出一行,包含一个整数,表示红军需要发起的突击行动总次数。

数据范围

2≤n≤10^5

输入样例1

5

2 1 2 3 1

输出样例1

3

输入样例2

5

2 2 2 2 2

输出样例2

5