Submission #701567

#TimeUsernameProblemLanguageResultExecution timeMemory
701567vjudge1JJOOII 2 (JOI20_ho_t2)C++17
100 / 100
17 ms5820 KiB
#include<bits/stdc++.h>
#define int long long
#define MOD 1000000007
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back

using namespace std;

int32_t main(){
    int n,k;
    cin>>n>>k;
    string s;
    cin>>s;
    queue<int>q,q2,q3;
    vector<pair<int,int>>v,v2,v3;
    for(int i=0;i<s.size();i++){
        if(s[i]=='J'){
            q.push(i);
            if(q.size()==k){
                v.pb({q.front(),i});
                q.pop();
            }
        }
        else if(s[i]=='O'){
            q2.push(i);
            if(q2.size()==k){
                v2.pb({q2.front(),i});
                q2.pop();
            }
        }
        else{
            q3.push(i);
            if(q3.size()==k){
                v3.pb({q3.front(),i});
                q3.pop();
            }
        }
    }
    int ans=INT_MAX;
    for(auto i:v){
        int l=0,r=v2.size()-1;
        while(l<=r){
            int mid=(l+r)/2;
            if(v2[mid].ff>i.ss)r=mid-1;
            else l=mid+1;
        }
        int x=l;
        if(x==v2.size())break;
        l=0,r=v3.size()-1;
        while(l<=r){
            int mid=(l+r)/2;
            if(v3[mid].ff>v2[x].ss)r=mid-1;
            else l=mid+1;
        }
        if(l==v3.size())break;
        ans=min(ans,n-3*k-i.ff-n+v3[l].ss+1);
    }
    if(ans==INT_MAX)cout<<"-1"<<endl;
    else cout<<ans<<endl;
}

Compilation message (stderr)

ho_t2.cpp: In function 'int32_t main()':
ho_t2.cpp:18:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int i=0;i<s.size();i++){
      |                 ~^~~~~~~~~
ho_t2.cpp:21:24: warning: comparison of integer expressions of different signedness: 'std::queue<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   21 |             if(q.size()==k){
      |                ~~~~~~~~^~~
ho_t2.cpp:28:25: warning: comparison of integer expressions of different signedness: 'std::queue<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   28 |             if(q2.size()==k){
      |                ~~~~~~~~~^~~
ho_t2.cpp:35:25: warning: comparison of integer expressions of different signedness: 'std::queue<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   35 |             if(q3.size()==k){
      |                ~~~~~~~~~^~~
ho_t2.cpp:50:13: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |         if(x==v2.size())break;
      |            ~^~~~~~~~~~~
ho_t2.cpp:57:13: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |         if(l==v3.size())break;
      |            ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...