题解:CF1692H Gambling
显然的,对于一个
考虑顺着枚举
那么对于这个区间
时间复杂度约为
#include <bits/stdc++.h>
using namespace std;
int T;
int n;
int a[200010];
int main() {
scanf("%d", &T);
for (int Tc = 1; Tc <= T; ++Tc) {
unordered_map<int, int> st;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
int ans = 0, v, l, r;
for (int i = 1; i <= n; ++i) {
if (st.count(i)) continue;
int s = 0;
for (int j = i; j <= n; ++j) {
if (a[j] == a[i]) ++s, st[j] = 1;
else --s;
if (s > ans) {
ans = s;
v = a[i];
l = i, r = j;
}
if (s < 0) break;
}
}
printf("%d %d %d\n", v, l, r);
}
return 0;
}