Submission #1253495

#TimeUsernameProblemLanguageResultExecution timeMemory
1253495LM1JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
32 ms3088 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define ff first #define ss second #define pb push_back #define vi vector<int> #define fr(i,ii,iii) for(int i=ii;i<iii;i++) const int N=2e5+5; int n,k; int c[N][3]; map<char,int>mp; string a; int find(int x,int d){ int l=x,r=n+1,m,ans=-1; while(l<r){ m=(l+r)/2; int cn=c[m][d]-c[x-1][d]; if(cn>=k){ ans=m; r=m; } else{ l=m+1; } } return ans; } int main(){ mp['J']=0; mp['O']=1; mp['I']=2; cin>>n>>k>>a; a='@'+a; int ans=1e6; fr(i,1,n+1){ fr(j,0,3)c[i][j]=c[i-1][j]; c[i][mp[a[i]]]++; } fr(i,1,n+1){ int i1=i; fr(j,0,3){ i1=find(i1,j); if(i1==-1)goto end; } ans=min(ans,i1-i+1-3*k); } end:; cout<<(ans==1e6?-1:ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...