#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("abm,fma,bmi,bmi2,popcnt,lzcnt")
#include <iostream>
#include <vector>
using namespace std;
const int N = 1e6;
int main() {
int n;
scanf("%d", &n);
static char s[N];
scanf("%s", s);
static vector<int> u[N];
for (int i = 0; i < n; i++)
u[s[i] - 'a'].push_back(i);
int ans = 0;
for (int i = 0; i < 26; i++)
for (int j = 0; j < 26; j++) {
if (i == j)
continue;
static int t[N + 1];
int m = 0, l = 0, r = 0;
while (l < (int) u[i].size() || r < (int) u[j].size())
if (l == (int) u[i].size())
t[++m] = -1, r++;
else if (r == (int) u[j].size())
t[++m] = +1, l++;
else if (u[i][l] < u[j][r])
t[++m] = +1, l++;
else
t[++m] = -1, r++;
int p = 0, c = 0, d = 0, mn = n;
for (int k = 1; k <= m; k++) {
c += t[k];
if (t[k] == -1) {
for (int k_ = p; k_ < k; k_++)
mn = min(mn, d += t[k_]);
p = k;
}
ans = max(ans, c - mn);
}
}
printf("%d\n", ans);
return 0;
}
Compilation message
roz.cpp: In function 'int main()':
roz.cpp:12:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
12 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
roz.cpp:14:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
14 | scanf("%s", s);
| ~~~~~^~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
11 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23752 KB |
Output is correct |
3 |
Correct |
12 ms |
23796 KB |
Output is correct |
4 |
Correct |
10 ms |
23724 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
11 ms |
23764 KB |
Output is correct |
2 |
Correct |
11 ms |
23764 KB |
Output is correct |
3 |
Correct |
12 ms |
23772 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
11 ms |
23764 KB |
Output is correct |
2 |
Correct |
12 ms |
23728 KB |
Output is correct |
3 |
Correct |
12 ms |
23764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
13 ms |
23764 KB |
Output is correct |
2 |
Correct |
11 ms |
23764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
20 ms |
23868 KB |
Output is correct |
2 |
Correct |
11 ms |
23764 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
79 ms |
24400 KB |
Output is correct |
2 |
Correct |
12 ms |
23800 KB |
Output is correct |
3 |
Correct |
15 ms |
23824 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
654 ms |
30276 KB |
Output is correct |
2 |
Correct |
11 ms |
23764 KB |
Output is correct |
3 |
Correct |
374 ms |
28532 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
646 ms |
30120 KB |
Output is correct |
2 |
Correct |
501 ms |
28500 KB |
Output is correct |
3 |
Correct |
139 ms |
28700 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
665 ms |
30076 KB |
Output is correct |
2 |
Correct |
189 ms |
31440 KB |
Output is correct |
3 |
Correct |
155 ms |
29660 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
668 ms |
29832 KB |
Output is correct |
2 |
Correct |
172 ms |
32692 KB |
Output is correct |
3 |
Correct |
168 ms |
29460 KB |
Output is correct |