Submission #1146591

#TimeUsernameProblemLanguageResultExecution timeMemory
1146591woohyun_jngJOIOJI (JOI14_joioji)C++20
100 / 100
31 ms6608 KiB
#include <bits/stdc++.h>
#define MAX 300000

using namespace std;
typedef array<int, 3> tp;

int S[MAX];
map<tp, int> mp;

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);

    int N, res = 0, X;
    tp C = {0, 0, 0};
    string s;

    cin >> N >> s;
    for (int i = 1; i <= N; i++) {
        if (s[i - 1] == 'J')
            S[i] = 0;
        else if (s[i - 1] == 'O')
            S[i] = 1;
        else
            S[i] = 2;
    }

    mp[{0, 0, 0}] = 0;
    for (int i = 1; i <= N; i++) {
        C[S[i]]++, X = min({C[0], C[1], C[2]});
        C[0] -= X, C[1] -= X, C[2] -= X;

        if (mp.find(C) != mp.end())
            res = max(res, i - mp[C]);
        else
            mp[C] = i;
    }

    cout << res << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...