Submission #1323290

#TimeUsernameProblemLanguageResultExecution timeMemory
1323290ttparin_JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
7 ms4100 KiB
#include<bits/stdc++.h>
using namespace std;
vector<int> jj;
vector<int> oo;
vector<int> ii;
int cojj[200010];
int cooo[200010];
int coii[200010];
int z;
int main(){
 int mini=INT_MAX;
 int n;
 cin>>n;
 int k;
 cin>>k;
 string s;
 cin>>s;
 if(s[0]=='J'){
    cojj[0]=1;
    jj.push_back(0);
 }
 if(s[0]=='O'){
    cooo[0]=1;
 oo.push_back(0);
 }
    if(s[0]=='I'){
        ii.push_back(0);
        coii[0]=1;
    }
 for(int i=1;i<n;i++){
    cojj[i]=cojj[i-1];
 cooo[i]=cooo[i-1];
 coii[i]=coii[i-1];
    if(s[i]=='J'){
    cojj[i]++;
    jj.push_back(i);
 }
 if(s[i]=='O'){
    cooo[i]++;
 oo.push_back(i);
 }
    if(s[i]=='I'){
        ii.push_back(i);
        coii[i]++;
    }
 }
 for(int i=1;i<n;i++){
    if((s[i]=='O'&&cooo[n-1]-cooo[i]>=k-1)&&cojj[i]>=k){
       z=oo[cooo[i]+k-2];
       if(coii[n-1]-coii[z]>=k)
        mini=min(mini,ii[coii[z]+k-1]-jj[cojj[i]-k]+1-k*3);
    }
 }
 if(mini==INT_MAX){
    cout<<"-1";
    return 0;
 }
 cout<<mini;
 return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...