CF1119A Ilya and a Colorful Walk 题解

Content

有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),试求出两个不相等的数之间的距离的最大值。

数据范围:\(3\leqslant n\leqslant 3\times 10^5,1\leqslant a_i\leqslant n\)

Solution

弄两个指针 \(l,r\),一开始将它们分别定为 \(1,n\),然后分两次操作,第一次只将 \(l\) 向右移,第二次只将 \(r\) 向左移,直到 \(a_l\neq a_r\) 为止,然后再求出这两次操作后距离之间的较大值。

Code

int n, a[300007], l, r, ans;

int main() {
	getint(n);
	_for(i, 1, n)	getint(a[i]);
	l = 1, r = n;
	while(l < r && a[l] == a[r])	l++;
	ans = r - l;
	l = 1, r = n;
	while(l < r && a[l] == a[r])	r--;
	ans = max(ans, r - l);
	writeint(ans);
	return 0;
}
posted @ 2021-12-17 14:29  Eason_AC  阅读(28)  评论(0)    收藏  举报