4395: B军训(train)

内存限制:512 MB 时间限制:2.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

### B军训(train) X哥从军队退役之后做起了军队教官。这天他看着E班学生排起来乱七八糟的队伍,感到十分头疼。 E班的$n$个人排成了一队,但是这些人并不是按身高从低到高排的。 X哥可以进行三种操作: - 将一条队列从两个学生中间的位置切割成两条 - 让一条队列中的学生向后转——这样一来这个队列中的学生顺序就会颠倒过来。 - 将所有不同的队列以任意顺序组合 X哥想用这些操作让学生们从低到高排成一排。 因为切割队列需要喊很多很复杂的口号,X哥想知道最少需要切割几次队列。

输入

第一行一个正整数$n$,表示班里的总人数。 接下来一行$n$个数字,第$i$个数字$a_i$表示队列里第$i$个人是班里第$a_i$高的人。 保证从$1$到$n$的所有数都在$a_i$中出现一次。

输出

一个正整数,表示最少进行几次切割队列的操作。

样例输入 复制

4
4 1 3 2

样例输出 复制

2

提示

#### 【样例 1 输入】 ```input 4 4 1 3 2 ``` #### 【样例 1 输出】 ```output 2 ``` #### 【样例 1 解释】 切割两次,将队伍分成 4|1|3,2三个队伍,然后让第三个队伍的学生向右转,再经过排列即可从小到大排列。 #### 【样例 2 输入】 ```input 5 2 4 1 3 5 ``` #### 【样例 2 输出】 ```output 4 ``` | 测试点编号 | $n$ | | ---------: | ------------: | | $1∼5$ | $\le 5$ | | $6∼10$ | $\le 1000000$ |