3718 - 最多分成多少块V2
描述

小b有个长度为n的数组a,她想将这个数组排序。然而小b很懒,她觉得对整个数组排序太累了,因此她请你将a分成一些块,使得她只需要对每一块分别排序,就能将整个数组排序。请问你最多能把a分成多少块。保证a为0...n-1的一个排列。

输入

第1行:一个整数 n(1 <= n <= 100000)。
第2行:n 个整数表示数组 a,两个数之间用空格分开(a 是 0..n-1 的一个排列)。

输出

输出一个整数,表示最多能分成的块数。

样例

输入

4
1 0 2 3

输出

3
提示

由于 a 是 0..n-1 的排列,一个前缀能单独成为一个块,当且仅当该前缀恰好包含 0..i 这些值,即前缀最大值等于下标 i。从左到右扫描,维护当前前缀最大值 mx,每当 mx == i 就可以在此处切一刀,切的次数即为答案。

来源
51nod
标签
题目参数
时间限制 1 秒
内存限制 128 MB
提交次数 1
通过次数 1