Submission #311173

#TimeUsernameProblemLanguageResultExecution timeMemory
311173vipghn2003JJOOII 2 (JOI20_ho_t2)C++14
100 / 100
36 ms3272 KiB
#include<bits/stdc++.h>

using namespace std;

const int N=2e5+5;
string s;
int n,k,sum[3][N];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>n>>k;
    cin>>s;
    s="."+s;
    for(int i=1;i<=n;i++)
    {
        sum[0][i]=sum[0][i-1]+(s[i]=='J');
        sum[1][i]=sum[1][i-1]+(s[i]=='O');
        sum[2][i]=sum[2][i-1]+(s[i]=='I');
    }
    int res=-1;
    for(int i=1;i<=n-3*k+1;i++)
    {
        bool kt=true;
        int cur=i;
        for(int j=0;j<3;j++)
        {
            int to=lower_bound(sum[j]+1,sum[j]+n+1,sum[j][cur-1]+k)-sum[j];
            if(to>n) kt=false;
            cur=to+1;
        }
        if(!kt) continue;
        if(res==-1||res>(cur-i)-3*k) res=(cur-i)-3*k;
    }
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...