답안 #807476

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
807476 2023-08-04T17:54:09 Z OrazB JJOOII 2 (JOI20_ho_t2) C++14
100 / 100
13 ms 3140 KB
#include <bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
#define ll long long int
#define pii pair <int, int>
#define pb push_back
#define ff first
#define ss second

const int N = 2e5+5;
int n, k, p[N][3];
string s;

int F(int i, int t){
	if (i == -1) return -1;
	int l = i, r = n, pos = -1;
	while(l <= r){
		int md = (l+r)>>1;
		if (p[md][t]-p[i][t] < k) l = md + 1;
		else{
			pos = md;
			r = md - 1;
		}
	}
	return pos;
}

int main ()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> n >> k >> s;
	s = '#' + s;
	for (int i = 1; i <= n; i++){
		for (int j = 0; j < 3; j++) p[i][j] = p[i-1][j];
		if (s[i] == 'J') p[i][0]++;
		if (s[i] == 'O') p[i][1]++;
		if (s[i] == 'I') p[i][2]++;
	}
	const int inf = 1e9;
	int mn = inf;
	for (int i = 1; i <= n; i++){
		if (s[i] != 'J') continue;
		int r = F(F(F(i-1, 0), 1), 2);
		if (r == -1) break;
		mn = min(mn, (r-i+1)-3*k);
	}
	if (mn == inf) mn = -1;
	cout << mn; 
}	
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 468 KB Output is correct
27 Correct 0 ms 324 KB Output is correct
28 Correct 0 ms 328 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 1 ms 328 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 1 ms 328 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 340 KB Output is correct
35 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 320 KB Output is correct
7 Correct 1 ms 328 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 468 KB Output is correct
27 Correct 0 ms 324 KB Output is correct
28 Correct 0 ms 328 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 1 ms 328 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 1 ms 328 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 340 KB Output is correct
35 Correct 1 ms 340 KB Output is correct
36 Correct 8 ms 2856 KB Output is correct
37 Correct 9 ms 3100 KB Output is correct
38 Correct 10 ms 3100 KB Output is correct
39 Correct 11 ms 3100 KB Output is correct
40 Correct 5 ms 3084 KB Output is correct
41 Correct 10 ms 3100 KB Output is correct
42 Correct 13 ms 3100 KB Output is correct
43 Correct 2 ms 2260 KB Output is correct
44 Correct 3 ms 2504 KB Output is correct
45 Correct 3 ms 3100 KB Output is correct
46 Correct 3 ms 3100 KB Output is correct
47 Correct 4 ms 3100 KB Output is correct
48 Correct 4 ms 3076 KB Output is correct
49 Correct 2 ms 2140 KB Output is correct
50 Correct 3 ms 3140 KB Output is correct
51 Correct 3 ms 3100 KB Output is correct
52 Correct 3 ms 2980 KB Output is correct
53 Correct 3 ms 3100 KB Output is correct
54 Correct 8 ms 3100 KB Output is correct
55 Correct 4 ms 3100 KB Output is correct
56 Correct 2 ms 3100 KB Output is correct