#include <stdio.h>
#include <map>
#include <tuple>
#define N 200000
#define N_ (N + 1)
char s[N_];
int n, z, cj[N_], co[N_], ci[N_];
std::map<std::tuple<int, int, int>, int> m;
int main() {
scanf("%d%s", &n, s);
for (int i = 0; i < n; ++i)
ci[i + 1] = ci[i] + (s[i] == 'I'),
cj[i + 1] = cj[i] + (s[i] == 'J'),
co[i + 1] = co[i] + (s[i] == 'O');
for (int i = n - 1; i >= 0; --i) {
std::tuple<int, int, int> w {i - cj[i], i - co[i], i - ci[i]};
if (m.count(w) && m[w] - i + 1 > z)
z = 1 + m[w] - i;
std::tuple<int, int, int> v {i - 3 * cj[i + 1] + 1, i - 3 * co[i + 1] + 1, i - 3 * ci[i + 1] + 1};
if (m.count(v) == 0)
m[v] = i;
}
printf("%d", z);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
joioji.cpp: In function 'int main()':
joioji.cpp:14:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
14 | scanf("%d%s", &n, s);
| ~~~~~^~~~~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |