Submission #1174880

#TimeUsernameProblemLanguageResultExecution timeMemory
1174880Hamed_GhaffariJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
9 ms3340 KiB
#include<bits/stdc++.h> using namespace std; const int MXN = 2e5+5; int n, k, cj[MXN], ci[MXN]; vector<int> J, O, I; string s; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> k >> s; for(int i=0; i<n; i++) { cj[i] = (i?cj[i-1]:0) + (s[i]=='J'); ci[i] = (i?ci[i-1]:0) + (s[i]=='I'); if(s[i]=='J') J.push_back(i); if(s[i]=='O') O.push_back(i); if(s[i]=='I') I.push_back(i); } int ans = 10*n; for(int i=0; i<int(O.size())-k+1; i++) if(cj[O[i]]>=k && ci[n-1]-ci[O[i+k-1]]>=k) ans = min(ans, I[lower_bound(I.begin(),I.end(),O[i+k-1])-I.begin()+k-1]- J[lower_bound(J.begin(),J.end(),O[i])-J.begin()-k]+1-3*k); cout << (ans==10*n ? -1 : ans) << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...