#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll J[100005], O[100002], I[100002];
int main() {
ll n, m, r, x, y, i,p, j,cnt1,cnt, ans, t,s, mx, mn, k;
string str;
cin >> n >> str;
for (i = 0; i < n; i ++) {
J[i + 1] = J[i];
O[i + 1] = O[i];
I[i + 1] = I[i];
if ( str[i] == 'J') J[i + 1] ++;
if ( str[i] == 'O') O[i + 1] ++;
if ( str[i] == 'I') I[i + 1] ++;
}
ans= 0;
for (i = 1; i <= n; i ++) {
if ( str[i - 1] == 'O') {
ans = ans + (J[i] * (I[n] - I[i ]));
}
}
// J
cnt = 0;
cnt1 = 0;
for (i = n; i >= 1; i --) {
if ( str[i - 1] == 'I') cnt1 ++;
if ( str[i - 1] == 'O') cnt += cnt1;
}
p = cnt;
// I
cnt= cnt1 = 0;
for (i =0; i < n; i ++) {
if ( str[i] == 'J') cnt1 ++;
if ( str[i] == 'O') cnt += cnt1;
}
p =max(p, cnt);
for (i = 1; i < n; i ++) {
p = max(p, J[i] *(I[n] - I[i]));
}
cout << ans + p << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |