Submission #1225833

#TimeUsernameProblemLanguageResultExecution timeMemory
1225833mariamtsagareliJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
8 ms1804 KiB
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,k;
    cin>>n>>k;
    string s;
    cin>>s;
    vi p,q,r;
    for(int i=0;i<n;i++){
        if(s[i]=='J')p.push_back(i);
        else if(s[i]=='O')q.push_back(i);
        else if(s[i]=='I')r.push_back(i);
    }
    int ans=INT_MAX;
    for(int a=0;a+ k <= (int)p.size();a++){
        int b=p[a+k-1];
        auto it1=lower_bound(q.begin(),q.end(),b+1);
        if(it1==q.end())break;
        int c=it1 - q.begin();
        if(c+ k-1 >= (int)q.size())continue;
        int d=q[c+k-1];
        auto it2=lower_bound(r.begin(),r.end(),d+1);
        if(it2==r.end())continue;
        int e=it2 - r.begin();
        if(e+ k-1 >= (int)r.size())continue;
        int f=r[e+k-1];
        int cost = (f - p[a] + 1) - 3*k;
        ans=min(ans,cost);
    }
    if(ans==INT_MAX)cout<<-1<<"\n";
    else cout<<ans<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...