Submission #1343442

#TimeUsernameProblemLanguageResultExecution timeMemory
1343442minhtienJJOOII 2 (JOI20_ho_t2)C++20
0 / 100
1 ms344 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];
deque<int>v,v1;
int tong=inf;
int main()
{
    cin >> n >>k;
    int k1=k,k2=k;
    cin >>s;
    s=" "+s;
    for(int i=1;i<=n;i++){
        pre[i]=pre[i-1];
        if(s[i]=='O') pre[i]++;
    }
    for(int i=1;i<=n;i++){
        if(s[i]=='J'){
            v.push_back(i);
            if(v.size()>k){
                v.pop_front();
            }
        }
        else if(s[i]=='I'){
            v1.push_back(i);
            if(v1.size()>k){
                v1.pop_front();
            }
//            cout << " " << i << " "<< v1.size() << " "<< v.size() << " " << k << "\n";
            if(v1.size()>=k && v.size()>=k){
                int s2=v1.back();
                int s3=v.front();
                int sum=s2-s3+1;
                if(sum>=3*k){
                    int s4=v1.front(),s5=v.back();
                    int sum1=pre[s4]-pre[s5];
                    if(sum1>=k){
                        int sum2=s2-s3+1-3*k;
//                        cout << " " << sum2 << "\n";
                        tong=min(tong,sum2);
                    }
                }

            }
        }
    }
    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...