#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k;
string s;
cin>>n>>k>>s;
s='*'+s;
vector<int> vec1,vec2,vec3;
for(int i=1;i<=n;++i){
if(s[i]=='J')vec1.push_back(i);
else if(s[i]=='O')vec2.push_back(i);
else if(s[i]=='I')vec3.push_back(i);
}
if(vec1.size()<k||vec2.size()<k||vec3.size()<k){
cout<<-1<<endl;
return 0;
}
int min_cost=LLONG_MAX;
for(int i=0;i+k-1<vec1.size();++i){
int last_j=vec1[i+k-1];
auto o_it=lower_bound(vec2.begin(),vec2.end(),last_j+1);
if(o_it==vec2.end()||o_it+k-1==vec2.end())continue;
int last_o=*(o_it+k-1);
auto i_it=lower_bound(vec3.begin(),vec3.end(),last_o+1);
if(i_it==vec3.end()||i_it+k-1==vec3.end())continue;
int last_i=*(i_it+k-1);
int length=last_i-vec1[i]+1;
int cost=length-3*k;
min_cost=min(min_cost,cost);
}
if(min_cost==LLONG_MAX)cout<<-1<<endl;
else cout<<min_cost<<endl;
return 0;
}
Compilation message (stderr)
ho_t2.cpp: In function 'int main()':
ho_t2.cpp:18:18: warning: overflow in conversion from 'long long int' to 'int' changes value from '9223372036854775807' to '-1' [-Woverflow]
18 | int min_cost=LLONG_MAX;
| ^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |