设音符的音高序列为 a1,a2,…,an,因为选取的音符必须保持原有顺序,所以本质上是在原序列中选一个子序列。
根据题意:
小Z有一段由 n 个音符组成的旋律,第 i 个音符的音高为 ai。现在他想按照原有顺序选取尽可能多的音符,使得选取出的子序列的音高先非严格上升,后非严格下降。换句话说,存在一个位置 k,使得前半段 ai1≤ai2≤⋯≤aik,后半段 aik≥aik+1≥⋯≥aim(i1<i2<⋯<im)。请你帮忙计算最多能选取的音符个数。
数据范围:1≤n≤105,1≤ai≤109,且所有数值均为整数。
第一行包含一个整数 n。
第二行包含 n 个整数,依次表示 a1,a2,…,an,相邻整数用空格分隔。
输出一个整数,表示答案。
输入
1
10
输出
1
说明
只有一个音符,无论山峰形状如何定义,都只能选取这一个音符,因此最多选取 1 个音符。
输入
4
7 7 7 7
输出
4
说明
所有音符的音高均为 7。可以选出全部 4 个音符构成子序列,前半段 7≤7≤7 满足非严格上升,后半段 7≥7≥7 满足非严格下降(高峰位置可以选在第 2 个或第 3 个音符),因此答案为 4。
输入
8
4 2 5 5 6 3 1 4
输出
6
说明
一种最优选取方案为子序列 2,5,5,6,3,1。前半段 2≤5≤5≤6 为非严格上升,后半段 6≥3≥1 为非严格下降,共 6 个音符。可以验证不存在更长的合法子序列,故答案为 6。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.