Submission #1143729

#TimeUsernameProblemLanguageResultExecution timeMemory
1143729NomioJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
8 ms1804 KiB
#include<bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n, k;
	cin >> n >> k;
	string s;
	cin >> s;
	vector<int> J, O, I;
	for(int i = 0; i < n; i++) {
		if(s[i] == 'J') J.push_back(i);
		if(s[i] == 'O') O.push_back(i);
		if(s[i] == 'I') I.push_back(i);
	}
	int mn = n;
	for(int i = k - 1; i < J.size(); i++) {
		if(O.back() > J[i]) {
			int idO = upper_bound(O.begin(), O.end(), J[i]) - O.begin();
			if(idO + k - 1 < O.size()) {
				int posO = O[idO + k - 1];
				if(I.back() > O[idO + k - 1]) {
					int idI = upper_bound(I.begin(), I.end(), O[idO + k - 1]) - I.begin();
					if(idI + k - 1 < I.size()) {
						int posI = I[idI + k - 1];
						mn = min(mn, posI - J[i - (k - 1)] + 1 - k * 3);
					}
				}
			}
		}
	}
	cout << (mn == n ? -1 : mn) << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...