小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 就可以在此处切一刀,切的次数即为答案。