#include <bits/stdc++.h>
using namespace std;
set<int>b[3];
int find_pos(int m, int pos, int k){
auto it = b[m].lower_bound(pos);
int cnt = 1;
while(cnt != k){
if(it == b[m].end()) break;
it++;
cnt++;
}
if(cnt == k) return *it;
else return -1;
}
int main()
{
int n,k;
cin >> n >> k;
string a;
cin >> a;
for(int i = 0;i<n;i++){
if(a[i] == 'J') b[0].insert(i);
else if(a[i] == 'O') b[1].insert(i);
else b[2].insert(i);
}
int mnm = 1e9;
for(int i =0;i<n;i++){
if(a[i] == 'J'){
int pos1 = find_pos(0,i,k);
if(pos1 != -1){
int pos2 = find_pos(1,pos1,k);
if(pos2 != -1){
int pos3 = find_pos(2,pos2,k);
if(pos3 != -1){
int loc = pos3-i+1;
int cr = 3*k;
if(loc > 0 && cr > 0 && loc-cr>=0)
mnm = min(mnm,loc-cr);
}
}
}
}
}
if(mnm != 1e9)
cout << mnm;
else cout << -1;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |