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;
}
posted @ 2021-12-21 19:47  Eason_AC  阅读(37)  评论(0)    收藏  举报