链接:https://www.nowcoder.com/acm/contest/121/I
来源:牛客网

题目描述

    ACM竞赛队内要开运动会啦!!!!

    竞赛队内的一群阳光乐观积极的队员们迅速的在操场上站成了一支队伍准备开始热身运动。但教练看了一眼觉得队伍高高低低很不整齐。

教练想让大家从低到高站好,每次教练可以任选择一个人令他走到队首,教练想知道他要最少要进行几次这样的操作才能把队伍按从低到高排整齐(身高最低的人站在队首)。

输入描述:

第一行输入N(N<=1000)代表一共有N个队员
第二行输入N个数表示初始时的队伍所对应的每个人的身高(100<=身高<=300)(第一个输入的是队首,最后一个输入的是队尾)

输出描述:

输出教练所需要的最小操作步数
示例1

输入

复制
2
183 185

输出

复制
0
示例2

输入

复制
3
173 186 166

输出

复制
1
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=1003;
 4 int a[N],b[N],n;
 5 int main ()
 6 {
 7     scanf ("%d",&n);
 8     for (int i=1;i<=n;i++) {
 9         scanf ("%d",&a[i]);
10         b[i]=a[i];
11     }
12     sort (b+1,b+1+n);
13     int now=n;
14     for (int i=n;i>=1;i--) {
15         if (b[now]==a[i]);
16             now--;
17     }
18     printf("%d\n", now);
19     return 0;
20 }
21 
22 /*  思维:
23      从结尾开始有序的最大子序列K个元素
24     则只需要移动n-k个无序的元素即可
25 */