[Codeforces 1119A]Ilya and a Colorful Walk题解

[Codeforces 1119A]Ilya and a Colorful Walk题解

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