#Q0032. 排队(arrange)

排队(arrange)

题目描述

某班有 nn 名学生,学号分别为 1n1\sim n。体育课上需要整理队伍,目前所有学生站成一排,从左到右第 ii 个人学号是 pip_ipp 数组形成一个排列。为了使所有学生学号单调递增,体育老师可以任意进行如下操作:选择一个学生出列,并让他前往队伍最前方或最后方,然后让队伍对齐。

体育老师头脑简单四肢发达,于是他希望你能够帮忙。现给出排列 pp,求体育老师将学生按顺序排好所需要进行的最小操作次数。

输入格式

从文件 arrange.in 中读入数据。

输入的第一行包含整数 nn,表示学生个数。

第二行包含 nn 个整数 pip_i,表示初始时学生学号的顺序。

输出格式

输出到文件 arrange.out 中。

一行一个整数,表示最小操作次数。

样例 1 输入

4
4 1 3 2

样例 1 输出

2

样例 1 解释

其中一种最优方案是,先让编号为 33 的人前往最后方,再让编号为 44 的人前往最后方。可以证明不存在更优的方案。

样例 2 输入

5
4 1 2 5 3

样例 2 输出

2

样例 2 解释

其中一种最优方案是,先让编号为 44 的人前往最后方,再让编号为 55 的人前往最后方。可以证明不存在更优的方案。

样例 3

见选手目录下的 arrange3.inarrange3.ans

该样例满足测试点 353\sim 5 的限制。

样例 4

见选手目录下的 arrange4.inarrange4.ans

该样例满足测试点 8108\sim 10 的限制。

数据范围

对于所有测试数据,保证:1n1051\le n\le10^5pp 是一个 1n1\sim n 的排列。

测试点编号 nn 特殊性质
1,21,2 10\le10
353\sim 5 1000\le1000
66 105\le10^5 特殊性质 A
7107\sim 10

特殊性质 A:保证 1in,pi=i\forall 1\le i\le n,p_i=i