제출 #1250969

#제출 시각아이디문제언어결과실행 시간메모리
1250969gry3125JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
7 ms2388 KiB
#include <bits/stdc++.h>
#define pb push_back
#define ll long long int
#define all(v) (v).begin(),(v).end()
#define fi first
#define se second
using namespace std;

int main() {
    int n, k; string s;
    cin >> n >> k >> s;
    vector<int> ji, ii, po(n+1);
    for (int i = 1; i <= n; i++) {
        if (s[i-1] == 'J') ji.pb(i);
        if (s[i-1] == 'I') ii.pb(i);
        po[i] = po[i-1];
        if (s[i-1] == 'O') po[i]++;
    }
    int L = 0, R = 0; int mn = 1000000;
    while (L+k-1 < ji.size() && R+k-1 < ii.size()) {
        while (R+k-1 < ii.size() && (ji[L+k-1] > ii[R] || po[ii[R]]-po[ji[L+k-1]-1] < k)) {
            R++;
        }
        if (R+k-1 < ii.size() && !(ji[L+k-1] > ii[R] || po[ii[R]]-po[ji[L+k-1]-1] < k)) {
        	mn = min(mn, ii[R+k-1]-ji[L]+1-3*k);
        }
        L++;
    }
    if (mn == 1000000) mn = -1;
    cout << mn;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...