#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
#define endl '\n'
int main(){
int n,m;cin >> n >> m;
string str;cin >> str;
vector<int> vcJ;
vector<int> vcO;
vector<int> vcI;
for(int i{};i < n;i++){
char k = str[i];
if(k == 'J') vcJ.emplace_back(i);
if(k == 'O') vcO.emplace_back(i);
if(k == 'I') vcI.emplace_back(i);
}
m--;
int ans = 1e9;
for(int i{m};i < vcO.size();i++){
auto itJ = lower_bound(vcJ.begin(),vcJ.end(),vcO[i-m]-1)-vcJ.begin();
auto itI = upper_bound(vcI.begin(),vcI.end(),vcO[i])-vcI.begin();
if(itJ < m || itI+m >= vcI.size()) continue;
ans = min(ans,vcI[itI+m]-vcJ[itJ-m]);
}
if(ans == 1e9) cout << -1;
else cout << ans-((m+1)*3)+1;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |