首页 > 试题广场 >

合唱队

[编程题]合唱队
  • 热度指数:327337 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}音乐课上,老师将 n 位同学排成一排。老师希望在不改变同学相对位置的前提下,从队伍中选出最少数量的同学,使得剩下的同学排成合唱队形。
\hspace{15pt}记合唱队形中一共有 k 位同学,记编号为 1,2,\dots,k ,第 i 个人的身高为 h_i 。要求:存在一位同学编号为 i \left(1 < i < k\right) ,使得 h_1,h_2,\dots,h_{i-1} 严格递增,且 h_{i+1},h_{i+2},\dots,h_k 严格递减;更具体地,合唱队形呈 h_1 < h_2 < \cdots < h_{i-1} < h_ih_i > h_{i+1} > \cdots > h_k
\hspace{15pt}你能帮助老师计算,最少需要出列多少位同学,才能使得剩下的同学排成合唱队形?

输入描述:
\hspace{15pt}第一行输入一个整数 n \left(1 \leqq n \leqq 3000\right) 代表同学数量。
\hspace{15pt}第二行输入 n 个整数 h_1,h_2,\dots,h_n \left(0 \leqq h_i \leqq 10^5\right) 代表每一位同学的身高。


输出描述:
\hspace{15pt}输出一个整数,代表最少需要出列的同学数量。
示例1

输入

8
186 186 150 200 160 130 197 200

输出

4

说明

\hspace{15pt}在这个样例中,有且仅有两种出列方式,剩下的同学分别为 \{186, 200, 160, 130\}\{150, 200, 160, 130\}

这道题你会答吗?花几分钟告诉大家答案吧!