题目描述
给定一个长度为 N 的整数序列 A=(A1,A2,...,AN)。你要把 A 分成连续的两段。
形式上,你要选择一个整数 i 满足 1≤i≤N,然后把 A 分成 (A1,A2,...,Ai) 和 (Ai+1,Ai+2,...,AN) 这两部分。
设 x 为 (A1,A2,...,Ai) 中不同整数的个数,y 为 (Ai+1,Ai+2,...,AN) 中不同整数的个数,你想要让 x+y 最大。求出这个最大值。
输入格式
第一行一个正整数 N,表示序列 A 的长度。
第二行 N 个整数 A1,A2,...,AN,表示序列 A。
输出格式
输出 x+y 的最大值。
5
3 1 4 1 5
5
- i=1 时,A 被分成了 (3) 和 (1,4,1,5),此时 x=1,y=3,x+y=4。
- i=2 时,A 被分成了 (3,1) 和 (4,1,5),此时 x=2,y=3,x+y=5。
- i=3 时,A 被分成了 (3,1,4) 和 (1,5),此时 x=3,y=2,x+y=5。
- i=4 时,A 被分成了 (3,1,4,1) 和 (5),此时 x=3,y=1,x+y=4。
综上所述,x+y 的最大值为 5。
10
2 5 6 5 2 1 7 9 7 2
8
数据范围/提示
对于所有的数据,2≤N≤3×105,1≤Ai≤N。
测试点编号 |
n |
特殊性质 |
1∼2 |
=2 |
无 |
3∼5 |
≤100 |
6∼7 |
≤5000 |
8 |
≤3×105 |
A 中有 n−1 个不同元素 |
9∼10 |
无 |