Submission #1253432

#TimeUsernameProblemLanguageResultExecution timeMemory
1253432LM1JJOOII 2 (JOI20_ho_t2)C++20
13 / 100
2092 ms3032 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define ff first
#define ss second
#define pb push_back
#define vi vector<int>
#define fr(i,ii,iii) for(int i=ii;i<iii;i++)
const int N=2e5+5;
int n,k;
int nxt[N][3];
string a;
int main(){
	cin>>n>>k>>a;
	int ls[3]={-1,-1,-1};
	for(int i=a.size()-1;i>=0;i--){
		if(a[i]=='J')ls[0]=i;
		if(a[i]=='O')ls[1]=i;
		if(a[i]=='I')ls[2]=i;
		fr(j,0,3)nxt[i][j]=ls[j];
	}
	fr(j,0,3)nxt[a.size()][j]=-1;
	int ans=1e6;
	fr(i,0,a.size()){
		int i1=i-1;
		fr(j,0,k){
			i1=nxt[i1+1][0];
			if(i1==-1)goto end;
		}
		int i2=i1;
		fr(j,0,k){
			i2=nxt[i2+1][1];
			if(i2==-1)goto end;
		}
		int i3=i2;
		fr(j,0,k){
			i3=nxt[i3+1][2];
			if(i3==-1)goto end;
		}
		int ans1=i3-i+1-3*k;
		ans=min(ans,ans1);
	}
	end:;
	cout<<(ans==1e6?-1:ans);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...