Submission #769504

#TimeUsernameProblemLanguageResultExecution timeMemory
769504stefdascaJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
7 ms1620 KiB
#include <bits/stdc++.h> using namespace std; int vj[200001], vo[200001], vi[200001]; int lj, lo, li; int main() { int n, k; cin >> n >> k; string s; cin >> s; for(int i = 0; i < n; i++) { if(s[i] == 'J') vj[++lj] = i; if(s[i] == 'O') vo[++lo] = i; if(s[i] == 'I') vi[++li] = i; } int pj = 1; int po = 1; int pi = 1; int ans = n+1; while(pj + k - 1 <= lj && po + k - 1 <= lo && pi + k - 1 <= li) { while(po + k - 1 <= lo && vo[po] <= vj[pj + k - 1]) po++; if(po + k - 1 <= lo) while(pi + k - 1 <= li && vi[pi] <= vo[po + k - 1]) pi++; if(pj + k - 1 <= lj && po + k - 1 <= lo && pi + k - 1 <= li) { int fi = vj[pj]; int lst = vi[pi + k - 1]; ans = min(ans, (lst - fi + 1) - 3 * k); } pj++; } if(ans == n+1) cout << -1; else cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...