제출 #1353448

#제출 시각아이디문제언어결과실행 시간메모리
1353448guardianecJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
4 ms3016 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    ll n,k;
    cin >> n >> k;
    string s;
    cin >> s;

    vector<ll> idxj, idxo, idxi;
    for (int i=0; i<n; i++) {
        if (s[i]=='J') idxj.push_back(i);
        if (s[i]=='O') idxo.push_back(i);
        if (s[i]=='I') idxi.push_back(i);
    }

    if (idxj.size() < k || idxo.size() < k || idxi.size() < k) {
        cout << -1;
        return 0;
    }

    ll j=0, o=0;

    ll res = INT_MAX;
    for (int i=0; i<=idxj.size()-k; i++) {
        while(j<idxo.size() && idxo[j]<idxj[i+k-1]) j++;
        while(o<idxi.size() && idxi[o]<idxo[j+k-1]) o++;
        if (i+k>idxj.size() || o+k>idxi.size() || j+k>idxo.size()) break;
        if (idxj.size()-i>=k && idxo.size()-j>=k && idxi.size()-o>=k) {
            ll o1 = idxi[o+k-1];
            ll val = (o1-idxj[i]+1)-(3*k);
            res = min(res, val);
        } else {
            break;
        }
    }

    cout << (res==INT_MAX ? -1 : res);
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…