Submission #1173610

#TimeUsernameProblemLanguageResultExecution timeMemory
1173610nguyenkhangninh99JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
7 ms6356 KiB

#include <bits/stdc++.h>
using namespace std;
 
#define int long long

void solve(){
    int n, k; cin >> n >> k;
    string s; cin >> s;

    s = ' ' + s;
    
    vector<int> j, o, i, prej(n + 1, -1e9), sufi(n + 1, 1e9);

    for (int p = 1; p <= n; p++){
        if(s[p] == 'O') o.push_back(p);
        if(s[p] == 'J') j.push_back(p);
        if(j.size() >= k) prej[p] = j[j.size() - k];
    }

    for (int p = n; p >= 1; p--){
        if(s[p] == 'I') i.push_back(p);
        if(i.size() >= k) sufi[p] = i[i.size() - k];
    }

    int res = 1e9;
    for (int p = 0; p + k - 1 < o.size(); p++) res = min(res, sufi[o[p + k - 1]] - prej[o[p]] + 1 - 3 * k);
    
    cout << (res > n ? -1 : res);
}
 
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
 
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...