Submission #1275519

#TimeUsernameProblemLanguageResultExecution timeMemory
1275519kaiboyJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
5 ms3144 KiB
#include <algorithm>
#include <iostream>

using namespace std;

const int N = 200000;

char cc[N + 1];
int qu[N], ppj[N], ppo[N], ppi[N];

int main() {
	ios_base::sync_with_stdio(false), cin.tie(NULL);
	int n, k; cin >> n >> k >> cc;
	for (int cnt = 0, i = 0; i < n; i++) {
		if (cc[i] == 'J')
			qu[cnt++] = i;
		ppj[i] = cnt >= k ? qu[cnt - k] : -1;
	}
	for (int cnt = 0, i = 0; i < n; i++) {
		if (cc[i] == 'O')
			qu[cnt++] = i;
		ppo[i] = cnt >= k ? qu[cnt - k] : -1;
	}
	for (int cnt = 0, i = 0; i < n; i++) {
		if (cc[i] == 'I')
			qu[cnt++] = i;
		ppi[i] = cnt >= k ? qu[cnt - k] : -1;
	}
	int ans = n;
	for (int i = 0; i < n; i++) {
		int p = ppi[i];
		if (p == -1)
			continue;
		p = ppo[p];
		if (p == -1)
			continue;
		p = ppj[p];
		if (p == -1)
			continue;
		ans = min(ans, i - p + 1 - k * 3);
	}
	cout << (ans < n ? ans : -1) << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...