#abc262g. [abc262_g]LIS with Stack

[abc262_g]LIS with Stack

题目描述

有一个空序列 XX 和一个空栈 SS。另外,给定一个长度为 NN 的整数序列 A=(a1,,aN)A=(a_1,\ldots,a_N)。对于每个 i=1,,Ni=1,\ldots,N,高桥将执行以下操作之一:

  • 将整数 aia_i 移动到栈 SS 的顶部。
  • 从序列 AA 中丢弃整数 aia_i

此外,只要 SS 非空,高桥还可以进行以下操作:

  • SS 的顶部整数移动到序列 XX 的末尾。

最终的 XX 的得分定义如下:

  • 如果 XX 是非递减的,即对于所有的整数 i(1i<X)i(1 \leq i \lt |X|),都满足 xixi+1x_i \leq x_{i+1},其中 X=(x1,,xX)X=(x_1,\ldots,x_{|X|}),那么得分是 X|X|(其中 X|X| 表示 XX 中的项数)。
  • 如果 XX 不是非递减的,则得分是 00

求可能的最大得分。

约束条件

  • 1N501 \leq N \leq 50
  • 1ai501 \leq a_i \leq 50
  • 输入中的所有值都是整数。

输入格式

输入以标准输入给出,格式如下:

NN
a1aNa_1 \ldots a_N

输出格式

打印答案。

示例输入 1

7
1 2 3 4 1 2 3

示例输出 1

5

以下操作使得最终的 XX 等于 (1,1,2,3,4)(1,1,2,3,4),得分为 55

  • a1=1a_1=1 移动到栈 SS 的顶部。
  • SS 的顶部的 11 移动到序列 XX 的末尾。
  • a2=2a_2=2 移动到栈 SS 的顶部。
  • 丢弃 a3=3a_3=3
  • a4=4a_4=4 移动到栈 SS 的顶部。
  • a5=1a_5=1 移动到栈 SS 的顶部。
  • SS 的顶部的 11 移动到序列 XX 的末尾。
  • a6=2a_6=2 移动到栈 SS 的顶部。
  • SS 的顶部的 22 移动到序列 XX 的末尾。
  • a7=3a_7=3 移动到栈 SS 的顶部。
  • SS 的顶部的 33 移动到序列 XX 的末尾。
  • SS 的顶部的 44 移动到序列 XX 的末尾。

我们无法使得得分达到 66 或更高,因此可能的最大得分是 55

示例输入 2

10
1 1 1 1 1 1 1 1 1 1

示例输出 2

10