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;
}