답안 #534424

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
534424 2022-03-08T06:56:21 Z alvingogo JJOOII 2 (JOI20_ho_t2) C++14
100 / 100
8 ms 2404 KB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define AquA cin.tie(0);ios_base::sync_with_stdio(0);
#define fs first
#define sc second
#define p_q priority_queue
//#define int long long
using namespace std;

int main(){
	AquA;
	int n,k;
	cin >> n >> k;
	string s;
	cin >> s;
	int ans=n-3*k;
	int maxx=-9487888;
	vector<int> pj(n+1),po(n+1);
	int l=-1,r=-1,cnt=0;
	while(r<n){
		r++;
		cnt+=(s[r]=='J');
		if(cnt>=k){
			while(l<r){
				l++;
				if(s[l]=='J'){
					break;
				}
			}
			cnt--;
		}
		pj[r]=l;
	}
	l=-1;
	r=-1;
	cnt=0;
	while(r<n){
		r++;
		cnt+=(s[r]=='O');
		if(cnt>=k){
			while(l<r){
				l++;
				if(s[l]=='O'){
					break;
				}
			}
			cnt--;
		}
		po[r]=l;
	}
	int il=n,ir=n;
	cnt=0;
	while(il>=0){
		il--;
		cnt+=(s[il]=='I');
		int flag=0;
		if(cnt==k){
			flag=1;
			while(ir>il){
				ir--;
				if(s[ir]=='I'){
					break;
				}
			}
			cnt--;
		}
		if(flag){
			int h=n-1-ir;
			if(po[il]<0){
				break;
			}
			if(pj[po[il]]<0){
				break;
			}
			h+=pj[po[il]];
			maxx=max(maxx,h);
		}
	}
	if(maxx<0){
		cout << -1 << "\n";
	}
	else{
		cout << ans-maxx << "\n";
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 308 KB Output is correct
8 Correct 1 ms 312 KB Output is correct
9 Correct 1 ms 308 KB Output is correct
10 Correct 1 ms 312 KB Output is correct
11 Correct 1 ms 312 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 1 ms 204 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 308 KB Output is correct
8 Correct 1 ms 312 KB Output is correct
9 Correct 1 ms 308 KB Output is correct
10 Correct 1 ms 312 KB Output is correct
11 Correct 1 ms 312 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 1 ms 204 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 312 KB Output is correct
23 Correct 1 ms 204 KB Output is correct
24 Correct 1 ms 332 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Correct 1 ms 332 KB Output is correct
27 Correct 1 ms 332 KB Output is correct
28 Correct 1 ms 332 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 1 ms 308 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Correct 1 ms 332 KB Output is correct
33 Correct 1 ms 332 KB Output is correct
34 Correct 1 ms 312 KB Output is correct
35 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 308 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 308 KB Output is correct
8 Correct 1 ms 312 KB Output is correct
9 Correct 1 ms 308 KB Output is correct
10 Correct 1 ms 312 KB Output is correct
11 Correct 1 ms 312 KB Output is correct
12 Correct 1 ms 204 KB Output is correct
13 Correct 1 ms 204 KB Output is correct
14 Correct 1 ms 204 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 1 ms 332 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 312 KB Output is correct
23 Correct 1 ms 204 KB Output is correct
24 Correct 1 ms 332 KB Output is correct
25 Correct 1 ms 332 KB Output is correct
26 Correct 1 ms 332 KB Output is correct
27 Correct 1 ms 332 KB Output is correct
28 Correct 1 ms 332 KB Output is correct
29 Correct 1 ms 332 KB Output is correct
30 Correct 1 ms 308 KB Output is correct
31 Correct 0 ms 204 KB Output is correct
32 Correct 1 ms 332 KB Output is correct
33 Correct 1 ms 332 KB Output is correct
34 Correct 1 ms 312 KB Output is correct
35 Correct 1 ms 332 KB Output is correct
36 Correct 6 ms 2244 KB Output is correct
37 Correct 8 ms 2392 KB Output is correct
38 Correct 6 ms 2388 KB Output is correct
39 Correct 7 ms 2392 KB Output is correct
40 Correct 6 ms 2284 KB Output is correct
41 Correct 8 ms 2392 KB Output is correct
42 Correct 8 ms 2392 KB Output is correct
43 Correct 3 ms 1604 KB Output is correct
44 Correct 4 ms 1880 KB Output is correct
45 Correct 5 ms 2288 KB Output is correct
46 Correct 5 ms 2392 KB Output is correct
47 Correct 5 ms 2384 KB Output is correct
48 Correct 5 ms 2380 KB Output is correct
49 Correct 4 ms 1728 KB Output is correct
50 Correct 5 ms 2384 KB Output is correct
51 Correct 5 ms 2404 KB Output is correct
52 Correct 4 ms 2268 KB Output is correct
53 Correct 4 ms 2276 KB Output is correct
54 Correct 3 ms 2384 KB Output is correct
55 Correct 3 ms 2344 KB Output is correct
56 Correct 3 ms 2256 KB Output is correct