제출 #1335796

#제출 시각아이디문제언어결과실행 시간메모리
1335796itslqJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
10 ms1744 KiB
#include "bits/stdc++.h"
using namespace std;

const int INF = 1e9;

int main() {
    int N, K, ans = INF;
    string S;
    cin >> N >> K >> S;

    vector<int> J, O, I;

    for (int i = 0; i < N; i++) {
        if (S[i] == 'J') J.push_back(i);
        if (S[i] == 'O') O.push_back(i);
        if (S[i] == 'I') I.push_back(i);
    }

    const int X = J.size(), Y = O.size(), Z = I.size();

    for (int i = K - 1; i < X; i++) {
        const int y = lower_bound(O.begin(), O.end(), J[i]) - O.begin();
        if (y + K - 1 >= Y) break;

        const int z = lower_bound(I.begin(), I.end(), O[y + K - 1]) - I.begin();
        if (z + K - 1 >= Z) break;

        ans = min(ans, I[z + K - 1] - J[i - K + 1] + 1 - 3 * K);
    }

    cout << (ans == INF ? -1 : ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...