Submission #202050

#TimeUsernameProblemLanguageResultExecution timeMemory
202050khohkoJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
22 ms3848 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define ARRS ((ll)(4e5+100)) #define fr first #define sc second #define pb push_back #define MX ((ll)(1e9+100)) #define MAX ((ll)(1e18+100)) ll n; pair<ll,ll> a[ARRS]; ll b[ARRS]; ll ans[ARRS]; ll pl[ARRS]; ll pr[ARRS]; int main(){ ll n,m; string s; cin>>n>>m; cin>>s; ll l=0,r=0,c=0; for(r=0; r<n&&c!=m; r++){ c+=s[r]=='J'; pl[r]=MAX; } if(c<m){ cout<<-1; return 0; } while(s[l]!='J')l++; for(;r<n;r++){ pl[r]=r-l-m; if(s[r]=='J'){ l++; while(s[l]!='J')l++; } } reverse(s.begin(),s.end()); l=0,r=0,c=0; for(r=0; r<n&&c!=m; r++){ c+=s[r]=='I'; pr[n-r-1]=MAX; } if(c<m){ cout<<-1; return 0; } while(s[l]!='I')l++; for(;r<n;r++){ pr[n-r-1]=r-l-m; if(s[r]=='I'){ l++; while(s[l]!='I')l++; } } reverse(s.begin(),s.end()); l=0,r=0,c=0; for(r=0; r<n&&c!=m; r++){ c+=s[r]=='O'; } if(c<m){ cout<<-1; return 0; } while(s[l]!='O')l++; ll mn=MAX; for(;r<n;r++){ mn=min(mn, pl[l]+pr[r-1]+r-l-m); if(s[r]=='O'){ l++; while(s[l]!='O')l++; } } if(mn==MAX) cout<<-1<<endl; else cout<<mn<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...