제출 #1335823

#제출 시각아이디문제언어결과실행 시간메모리
1335823yhkhooJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
14 ms1748 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 200000, INF = MAXN * 67;

using vi = basic_string<int>;
int n, k;
string s;
vi jl, ol, il;

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n >> k;
    cin >> s;
	for(int i=0; i<n; i++){
		if(s[i] == 'J'){
			jl += i;
		}
		else if(s[i] == 'O'){
			ol += i;
		}
		else{
			il += i;
		}
	}
	int ans = INF;
	for(int i=0; i<n; i++){
		if(s[i] != 'J') continue;
		auto jp = lower_bound(jl.begin(), jl.end(), i);
		jp += k-1;
		if(jp >= jl.end()) continue;
		auto op = upper_bound(ol.begin(), ol.end(), *jp);
		op += k-1;
		if(op >= ol.end()) continue;
		auto ip = upper_bound(il.begin(), il.end(), *op);
		ip += k-1;
		if(ip >= il.end()) continue;
		ans = min(ans, *ip - i + 1 - 3*k);
	}
	if(ans == INF){
		cout << -1;
	}
	else{
		cout << ans;
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...