제출 #769504

#제출 시각아이디문제언어결과실행 시간메모리
769504stefdascaJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
7 ms1620 KiB
#include <bits/stdc++.h>

using namespace std;

int vj[200001], vo[200001], vi[200001];

int lj, lo, li;

int main()
{
	int n, k;
	cin >> n >> k;
	
	string s;
	cin >> s;
	
	
	for(int i = 0; i < n; i++)
	{
		if(s[i] == 'J')
			vj[++lj] = i;
		if(s[i] == 'O')
			vo[++lo] = i;
		if(s[i] == 'I')
			vi[++li] = i;
	}
	
	int pj = 1;
	int po = 1;
	int pi = 1;
	
	int ans = n+1;
	
	while(pj + k - 1 <= lj && po + k - 1 <= lo && pi + k - 1 <= li)
	{
		while(po + k - 1 <= lo && vo[po] <= vj[pj + k - 1])
			po++;
			
		if(po + k - 1 <= lo)
			while(pi + k - 1 <= li && vi[pi] <= vo[po + k - 1])
				pi++;
		
		if(pj + k - 1 <= lj && po + k - 1 <= lo && pi + k - 1 <= li)
		{
			int fi = vj[pj];
			int lst = vi[pi + k - 1];	
			
			
			ans = min(ans, (lst - fi + 1) - 3 * k);
		}
		pj++;
		
	}
	
	if(ans == n+1)
		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...