Submission #922911

# Submission time Handle Problem Language Result Execution time Memory
922911 2024-02-06T09:13:48 Z viwlesxq JJOOII 2 (JOI20_ho_t2) C++17
100 / 100
8 ms 2460 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define size(x) (int)x.size()
#define all(x) x.begin(), x.end()

template<class S, class T>
bool chmin(S &a, const T &b) {
	return a > b ? (a = b) == b : false;
}
template<class S, class T>
bool chmax(S &a, const T &b) {
	return a < b ? (a = b) == b : false;
}
const int inf = 1e9 + 7;

signed main() {
	cin.tie(nullptr)->sync_with_stdio(false);
	int n, k; cin >> n >> k;
	string s; cin >> s;
	s = '$' + s;
	int res = inf;
	deque<int> J, O, I;
	for (int i = 1; i <= n; ++i) {
		if (s[i] == 'O') O.push_back(i);
		else if (s[i] == 'I' && size(O) >= k) {
			I.push_back(i);
		}
	}
	for (int i = 1; i <= n; ++i) {
		if (s[i] == 'O' && size(J) >= k && size(O) >= k && size(I) >= k) {
			int cur = O[k - 1] - O[0] + 1 - k;
			cur += O[0] - J.back() - 1;
			cur += J.back() - J[size(J) - k] + 1 - k;
			cur += I[0] - O[k - 1] - 1;
			cur += I[k - 1] - I[0] + 1 - k;
			chmin(res, cur);
		}
		if (s[i] == 'J') J.push_back(i);
		else if (s[i] == 'O') {
			O.pop_front();
			if (size(O) < k) break;
			while (!I.empty() && I.front() < O[k - 1]) I.pop_front();
		}
	}
	cout << (res == inf ? -1 : res);
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 452 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 344 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 1 ms 344 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 1 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 1 ms 344 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 452 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 452 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 344 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 1 ms 344 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 1 ms 348 KB Output is correct
27 Correct 1 ms 348 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 348 KB Output is correct
32 Correct 1 ms 344 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 1 ms 348 KB Output is correct
36 Correct 8 ms 1840 KB Output is correct
37 Correct 6 ms 1828 KB Output is correct
38 Correct 6 ms 1828 KB Output is correct
39 Correct 6 ms 1828 KB Output is correct
40 Correct 5 ms 1760 KB Output is correct
41 Correct 8 ms 1828 KB Output is correct
42 Correct 6 ms 1828 KB Output is correct
43 Correct 3 ms 1116 KB Output is correct
44 Correct 4 ms 1360 KB Output is correct
45 Correct 5 ms 1688 KB Output is correct
46 Correct 5 ms 1696 KB Output is correct
47 Correct 5 ms 1692 KB Output is correct
48 Correct 4 ms 1568 KB Output is correct
49 Correct 4 ms 1364 KB Output is correct
50 Correct 5 ms 1568 KB Output is correct
51 Correct 6 ms 1572 KB Output is correct
52 Correct 3 ms 1304 KB Output is correct
53 Correct 3 ms 1316 KB Output is correct
54 Correct 5 ms 2460 KB Output is correct
55 Correct 4 ms 2340 KB Output is correct
56 Correct 3 ms 2340 KB Output is correct