农夫约翰的 N N N 头奶牛排成一排。
每头奶牛都用一个整数品种 ID 标识,队列中第 i i i 头奶牛的 ID 为 B i B_i Bi。
约翰认为如果有一大段连续的奶牛都具有相同的品种 ID,他的奶牛就会更加的引人注目。
为了创造这样的连续段,约翰决定选取一个特定品种 ID,并从队列中剔除所有具有此 ID 的奶牛。
请帮助约翰确定,他通过这样做,能够获得的具有相同品种 ID 的最大奶牛连续段的长度。
输入格式
第一行包含整数
N
N
N。
接下来 N N N 行,每行包含一个 B i B_i Bi。
输出格式
输出具有相同品种 ID 的最大奶牛连续段的长度。
数据范围
1
≤
N
≤
1000
,
1≤N≤1000,
1≤N≤1000,
0
≤
B
i
≤
1
0
6
,
0≤B_i≤10^6,
0≤Bi≤106,
不含所有奶牛品种都相同的数据。
输入样例:
9
2
7
3
7
7
3
7
5
7
输出样例:
4
样例解释
最初队列中奶牛的品种 ID 依次为
2
,
7
,
3
,
7
,
7
,
3
,
7
,
5
,
7
2,7,3,7,7,3,7,5,7
2,7,3,7,7,3,7,5,7。
我们去掉所有品种 ID 为 3 3 3 的奶牛,剩下的奶牛的品种 ID 依次为 2 , 7 , 7 , 7 , 7 , 5 , 7 2,7,7,7,7,5,7 2,7,7,7,7,5,7。
最大的具有相同品种 ID 的奶牛连续段的长度为 4 4 4。
#include<iostream>
#include<unordered_set>
using namespace std;
const int N = 1010;
int n, m;
int a[N], b[N];
int main(){
cin >> n;
unordered_set<int> S;
for(int i = 0; i < n; i++) cin >> a[i], S.insert(a[i]);
int res = 0;
for(int x: S){
m = 0;
for(int i = 0; i < n; i++)
if(a[i] != x)
b[m++] = a[i];
for(int i = 0; i < m; i++){
int j = i + 1;
while(j < m && b[j] == b[i]) j++;
res = max(res, j - i);
i = j - 1;
}
}
cout << res << endl;
return 0;
}