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