This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
using namespace std;
const int MAXN = 5e5+5;
int indj[MAXN];
int indo[MAXN];
int indi[MAXN];
int prefj[MAXN];
int prefo[MAXN];
int prefi[MAXN];
int ans = 1e9;
int main(){
int n,k;
cin>>n>>k;
string s;
cin>>s;
s = '#'+s;
for(int i=0;i<=n;i++){
indj[i] = 1e9;
indo[i] = 1e9;
indi[i] = 1e9;
}
for(int i=1;i<=n;i++){
prefj[i] = prefj[i-1]+(s[i]=='J');
prefo[i] = prefo[i-1]+(s[i]=='O');
prefi[i] = prefi[i-1]+(s[i]=='I');
//cout<<prefj[i]<<" "<<prefo[i]<<" "<<prefi[i]<<endl;
indj[prefj[i]] = min(indj[prefj[i]],i);
indo[prefo[i]] = min(indo[prefo[i]],i);
indi[prefi[i]] = min(indi[prefi[i]],i);
}
for(int i=1;i<=n;i++){
int nxt = indj[prefj[i-1]+k];
//cout<<nxt<<endl;
if(nxt>n){
break;
}
int nxt2 = indo[prefo[nxt]+k];
if(nxt2>n){
break;
}
int r = indi[prefi[nxt2]+k];
if(r>n){
break;
}
ans = min(ans,n-(3*k)-(i-1)-(n-r));
}
if(ans == 1e9){
cout<<-1<<endl;
return 0;
}
cout<<ans<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |