Submission #1335831

#TimeUsernameProblemLanguageResultExecution timeMemory
1335831yc11JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
11 ms1808 KiB
#include<bits/stdc++.h>
using namespace std;
int n,k;
signed main(){
    cin>>n>>k;
    string s;
    cin>>s;
    vector<int> j1;
    vector<int> o1;
    vector<int> i1;
    for (int i = 0;i<n;i++){
        if (s[i]=='J') j1.push_back(i);
        else if (s[i]=='O') o1.push_back(i);
        else i1.push_back(i);
    }

    int ans = 1e9;
    for (int i = 0;i<j1.size();i++){

        if (j1.size()<k+i) {break;}
        int ans1 = 0;
        ans1=ans1+j1[i+k-1]-j1[i]-k+1;

        int c = lower_bound(o1.begin(),o1.end(),j1[i+k-1])-o1.begin();
        if (o1.size()<c+k){break;}
        ans1 = ans1+o1[c+k-1]-o1[c]-k+o1[c]-j1[i+k-1];
    
        int c1 = lower_bound(i1.begin(),i1.end(),o1[c+k-1])-i1.begin();
        if (i1.size()<c1+k){break;}
        ans1 = ans1+i1[c1+k-1]-i1[c1]-k+i1[c1]-o1[c+k-1];
    
        ans=min(ans,ans1);
     
    }
    if (ans!=1e9) cout<<ans;
    else cout<<-1;


    return 0;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...