Submission #1335802

#TimeUsernameProblemLanguageResultExecution timeMemory
1335802justin271828JJOOII 2 (JOI20_ho_t2)C++20
0 / 100
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    string s;
    cin >> s;
    int arr[N];
    for (int i = 0; i < N; i++) {
        if (s[i] == 'J') arr[i] = 0;
        else if (s[i] == 'O') arr[i] = 1;
        else arr[i] = 2;
    }
    map<int, int> m[3];
    vector<int> v[3];
    for (int i = 0; i < N; i++) v[arr[i]].push_back(i);
    for (int j = 0; j < 3; j++) {
        int sz = v[j].size();
        for (int i = 0; i < sz; i++) {
            if (i+K-1 < sz) m[j][v[j][i]] = v[j][i+K-1];
            else m[j][v[j][i]] = -1;
        }
    }
    int ans = 1234567890;
    for (int k: v[0]) {
        int temp = m[0][k];
        if (temp <= 0) continue;
        map<int, int>::iterator it = m[1].upper_bound(temp);
        if (it == m[1].end()) continue;
        temp = (*it).second;
        if (temp <= 0) continue;
        it = m[2].upper_bound(temp);
        if (it == m[2].end()) continue;
        temp = (*it).second;
        if (temp > 0) ans = min(ans, temp-k);
    }
    if (ans == 1234567890) cout << -1;
    else cout << ans-3*K+1;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...