Submission #1157549

#TimeUsernameProblemLanguageResultExecution timeMemory
1157549mocha스탬프 수집 (JOI16_ho_t2)C++20
100 / 100
5 ms2120 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mx = 1e5+5;

int n;
string st;
int pre[mx], suf[mx];

int cnt(string st) {
    int cj = 0, co = 0;
    int ans = 0;
    for (int i=0;i<st.size();i++) {
        if (st[i] == 'J') cj++;
        else if (st[i] == 'O') co+=cj;
        else ans += co;
    }
    return ans;
}

signed main() {
    cin >> n;
    cin >> st;
    int ans = max(cnt("J"s+st), cnt(st+"I"s));
    int ct = cnt(st);
    for (int i=1;i<=n;i++) {
        pre[i] = pre[i-1] + (st[i-1]=='J');
    }
    for (int i=n;i>=1;i--) {
        suf[i] = suf[i+1] + (st[i-1]=='I');
    }
    for (int i=1;i<=n;i++) {
        ans = max(ans, ct + pre[i-1] * suf[i]);
    }
    cout << ans << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...