Type: Default 1000ms 256MiB

数组种类

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

给定一个长度为 NN 的整数列 A=(A1,A2,,AN)A=(A_1, A_2, \ldots, A_N)

当在 AA 的某一位置将其分割为 22 个非空的连续子序列时,求这两个子序列中不同整数的种类数之和的最大可能值。

更严格地说,对于满足 1iN11 \leq i \leq N-1 的整数 ii,分别计算子序列 (A1,A2,,Ai)(A_1, A_2, \ldots, A_i)(Ai+1,Ai+2,,AN)(A_{i+1}, A_{i+2}, \ldots, A_N) 中不同整数的种类数之和,并求这些和的最大值。

输入格式

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

NN
A1A_1 A2A_2 \ldots ANA_N

输出格式

输出答案。

输入输出样例 #1

输入 #1

5
3 1 4 1 5

输出 #1

5

输入输出样例 #2

输入 #2

10
2 5 6 5 2 1 7 9 7 2

输出 #2

8

样例解释 1

  • i=1i=1 时,子序列 (3)(3)(1,4,1,5)(1,4,1,5) 各自包含的整数种类数分别为 1133,和为 44
  • i=2i=2 时,子序列 (3,1)(3,1)(4,1,5)(4,1,5) 各自包含的整数种类数分别为 2233,和为 55
  • i=3i=3 时,子序列 (3,1,4)(3,1,4)(1,5)(1,5) 各自包含的整数种类数分别为 3322,和为 55
  • i=4i=4 时,子序列 (3,1,4,1)(3,1,4,1)(5)(5) 各自包含的整数种类数分别为 3311,和为 44

因此,当 i=2i=2i=3i=3 时,取到最大值 55

限制与约定

对于 40%40\% 的数据,2N1002 \leq N \leq 100

对于 100%100\% 的数据, 2N3×1052 \leq N \leq 3 \times 10^5 1AiN1 \leq A_i \leq N (1iN1 \leq i \leq N) 输入均为整数

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB