CF1090M The Pleasant Walk 题解
Content
有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),并已知有 \(k\) 个不相同的元素求最长连续的一段区间,使得这里面的元素互不相同。
数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant a_i\leqslant k\leqslant 10^5\)。
Solution
我们可以直接记录当前的元素是否和前面的不同,不同答案加 \(1\),否则取最大值之后回到初始值。
注意,初始值为 \(1\),因为一开始有 \(1\) 个元素。
Code
int n, k, a[100007], ans = 1, maxi;
int main() {
getint(n), getint(k);
_for(i, 1, n) {
getint(a[i]);
if(i != 1 && a[i] != a[i - 1]) ans++;
else {maxi = max(maxi, ans); ans = 1;}
}
maxi = max(maxi, ans);
writeint(maxi);
return 0;
}