Submission #1271207

#TimeUsernameProblemLanguageResultExecution timeMemory
1271207kustov_vadim_533JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
4 ms584 KiB
#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast,O3,unroll-loops")
//#pragma GCC target("avx2")
	
using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

#define len(v) (int)((v).size())

const int inf = 1e9;

inline void solve() {
	int n, k;
	cin >> n >> k;

	vector<char> a(n);
	for (int i = 0; i < n; ++i){
		cin >> a[i];
	}

	int J = 0, O = 0, I = 0;
	int cJ = 0, cO = 0, cI = 0;

	int ans = inf;
	
	for (int i = 0; i < n; ++i){
		cI += (a[i] == 'I');
		while (cI - (a[I] == 'I') >= k){
			cI -= (a[I] == 'I');
			cO += (a[I] == 'O');
			++I;
		}
		while (cO - (a[O] == 'O') >= k){
			cO -= (a[O] == 'O');
			cJ += (a[O] == 'J');
			++O;
		}
		while (cJ - (a[J] == 'J') >= k){
			cJ -= (a[J] == 'J');
			++J;
		}

		if (cJ >= k){
			ans = min(ans, i + 1 - J - 3 * k);
		}
	}
	if (ans == inf){
		cout << "-1\n";
	}
	else{
		cout << ans << '\n';
	}
}


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