제출 #1335822

#제출 시각아이디문제언어결과실행 시간메모리
1335822zhehanJJOOII 2 (JOI20_ho_t2)C++20
0 / 100
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  vector<int> str;
  vector<int> ji, oi, ii;
  for (int i = 0; i < n; ++i) {
    if (s[i] == 'J') {
      ji.push_back(i);
    }
    if (s[i] == 'O' && ji.size() >= k) {
      oi.push_back(i);
    }
    if (s[i] == 'I' && oi.size() >= k) {
      ii.push_back(i);
    }
  }
  int minop = INT_MAX;
  for (int i = 0; i < ji.size() - k + 1; ++i) {
    int opos = lower_bound(oi.begin(), oi.end(), ji[i + k - 1]) - oi.begin();
    if (opos + k - 1 >= oi.size()) {
      break;
    }
    int ipos = lower_bound(ii.begin(), ii.end(), oi[opos + k - 1]) - ii.begin();
    if (ipos + k - 1 >= ii.size()) {
      break;
    }
    int endpos = ii[ipos + k - 1];
    minop = min(minop, endpos - i + 1 - k * 3);
  }
  if (minop == INT_MAX) {
    cout << -1 << '\n';
    return 0;
  }
  cout << minop << '\n';
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...