Submission #1343450

#TimeUsernameProblemLanguageResultExecution timeMemory
1343450minhtienJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
10 ms1876 KiB
#include <bits/stdc++.h>

using namespace std;
const int N=2e5+6;
const int inf=1e9+7;
int n,k;
string s;
int pre[N];
int tong=inf;
vector<int>v,v1,v2;
int main()
{
    cin >> n >>k;
    int k1=k,k2=k;
    cin >>s;
    s=" "+s;
    for(int i=1;i<=n;i++){
        if(s[i]=='J'){
            v.push_back(i);
        }
        else if(s[i]=='O'){
            v1.push_back(i);
        }
        else{
            v2.push_back(i);
        }
    }
    for(int i=0;i<v.size();i++){
        int s1=i+k-1;
        if(s1<v.size()){
            int t=lower_bound(v1.begin(),v1.end(),v[s1])-v1.begin();
            int s2=t+k-1;
            if(s2<v1.size()){
                int t1=lower_bound(v2.begin(),v2.end(),v1[s2])-v2.begin();
                int s3=t1+k-1;
                if(s3<v2.size()){
                    int s4=v2[s3];
                    int sum1=s4-v[i]+1-3*k;
                    tong=min(tong,sum1);
                }
            }
        }
    }
    cout << (tong==inf?-1:tong);
    return 0;
}

/*

10 2
OJIJOIOIIJ

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...