(2)
N 位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设 K 位同学从左到右依次编号为1,2,·· · ·,K,他们的身高分别为T1 ,T2,· · ·,TK,则他们的身高满足T1<··· · ·<Ti>Ti+1>·· · ·>TK(1≤i≤K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。
输入格式:
输入的第 1 行是一个整数 N,表示同学的总数。第 2 行有 N 个整数,用空格分隔,第 i 个整数 Ti 是第 i 位同学的身高(厘米)。
输出格式:
输出包括一行,这一行只包含一个整数,就是最少需要几位同学出列。
数据范围:
2≤N≤100,130≤Ti ≤230。
输入样例:
8
186 186 150 200 160 130 197 220
输出样例:
4
01 #include<bits/stdc++.h>
02 using namespace std;
03 const int MAXN = 2024;
04 int n,ans=0;
05 int h[MAXN],f[MAXN],g[MAXN];
06 int main()
07 {
08 scanf("%d",&n);
09 for(int i = 1; i <= n; i++)
10 scanf("%d",&h[i]);
11 for(int i = 1; i <= n; i++)
12 {
13 ①;
14 for(int j = 1; j < i; j++)
15 if(②)
16 f[i] = max(f[i],f[j] + 1);
17 }
18 for(int i = n; i; i--)
19 {
20 g[i] = 1;
21 for(int j = n; ③; j--)
22 if(h[j] < h[i])
23 ④;
24 }
25 for(int i = 1; i <= n; i++)
26 ⑤;
27 printf("%d\n",n - ans);
28 return 0;
29 }