Submission #957292

#TimeUsernameProblemLanguageResultExecution timeMemory
957292aaron_dcoderJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
12 ms3388 KiB
#define NDEBUG


#ifdef NDEBUG
#define dbg(TXTMSG) if constexpr (false) cerr << "lol"
#define dbgv(VARN) ((void)0)
#define dbgfor(COND) if constexpr (false) for (COND)

#else
#define _GLIBCXX_DEBUG 1
#define _GLIBCXX_DEBUG_PEDANTIC 1
#pragma GCC optimize("trapv")
#define dbg(TXTMSG) cerr << "\n" << TXTMSG
#define dbgv(VARN) cerr << "\n" << #VARN << " = "<< VARN << ", line " << __LINE__ << "\n"
#define dbgfor(COND) for (COND)

#endif

#include <bits/stdc++.h>
using namespace std;
using ll = long long; 
using pll = pair<ll,ll>;
#define e0 first
#define e1 second
constexpr ll INFTY = 2e18;

int main()
{
	ll N,K;
	cin >> N >> K;

	string S;
	cin >> S;

	vector<ll> Js;
	vector<ll> Os;
	vector<ll> Is;

	for (ll i = 0; i < N; ++i)
	{
		if (S[i]=='J')
		{
			Js.push_back(i);
		}
		else if (S[i]=='O')
		{
			Os.push_back(i);
		}
		else
		{
			assert(S[i]=='I');
			Is.push_back(i);
		}
	}

	ll outp=INFTY;

	for (ll i = 0; i+K <= ll(Js.size()); ++i)
	{
		ll jidx = i+K-1;

		ll oidx = lower_bound(Os.cbegin(),Os.cend(), Js[jidx])-Os.cbegin()+K-1;
		if (ll(Os.size())<=oidx) break;
		ll iidx = lower_bound(Is.cbegin(), Is.cend(), Os[oidx])-Is.cbegin()+K-1;
		if (ll(Is.size())<=iidx) break;

		outp = min(outp,Is[iidx]-Js[i]+1);
	}

	cout << ((outp==INFTY)?-1:(outp-3*K)) << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...