제출 #508734

#제출 시각아이디문제언어결과실행 시간메모리
508734thiago_bastosJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
17 ms2004 KiB
#include "bits/stdc++.h"

using namespace std;

using i64 = long long;
using u64 = unsigned long long;
using i32 = int;
using u32 = unsigned;
using i16 = short;
using u16 = unsigned short;
using ld = long double;
using ii = pair<int, int>;

const int inf = 1e9;

void solve() {	
	int n, k, ans = inf;
	string s;

	cin >> n >> k >> s;

	vector<int> p[3];
	
	for(int i = 0; i < n; ++i) {
		if(s[i] == 'J') p[0].push_back(i);
		else if(s[i] == 'O') p[1].push_back(i);
		else p[2].push_back(i);
	}

	for(int i = 0; i < n; ++i) {
		if(s[i] != 'J') continue;
		int last = i;
		bool ok = true;
		for(int j = 0; j < 3; ++j) {
			int l = lower_bound(p[j].begin(), p[j].end(), last) - p[j].begin();
			if(l + k > (int)p[j].size()) {
				ok = false;
				break;
			}
			last = p[j][l + k - 1];
		}
		if(!ok) continue;
		ans = min(ans, last - i + 1 - 3 * k);
	}

	if(ans == inf) cout << "-1\n";
	else cout << ans << '\n';
}

int main() {
	ios_base :: sync_with_stdio(false);
	cin.tie(0);
	int t = 1;
	//cin >> t;
	while(t--) solve();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...