[Codeforces 1119A]Ilya and a Colorful Walk题解
说实话,没有用有道翻译的我,读题只用了一分钟(骄傲.jpg)
题目描述:给你n座城市,从1 - n 每个城市之间的间隔为1. 且 1与n 不相邻。
每个城市有自己的颜色ci。 求颜色不同的两座城市的最大距离,即 j - i (cj != ci, i < j).
时间复杂度O(n)
附AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn = 300005;
int a[maxn], n, ans, pos;
int read(int &x) {
char ch = getchar(); x = 0;
for(; !isdigit(ch); ch = getchar());
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
}
int main()
{
read(n);
for(int i = 1; i <= n; i ++) read(a[i]);
for(int i = 1; i < n; i ++) if(a[i] != a[n]) ans = max(ans, n - i), pos = i;
for(int i = 1; i < pos; i ++) if(a[i] == a[n]) ans = max(ans, pos - i);
cout << ans << endl;
return 0;
}