Submission #740379

#TimeUsernameProblemLanguageResultExecution timeMemory
740379tch1cherinJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
12 ms3192 KiB
#include <bits/stdc++.h> using namespace std; int main() { int N, K; cin >> N >> K; string S; cin >> S; vector<int> J(N, N + 1), O(N, N + 1), I(N, N + 1); for (int l = 0, r = 0, c = 0; l < N; l++) { while (r < N && c < K) { c += S[r] == 'J'; r++; } J[l] = (c == K ? r : N + 1); c -= S[l] == 'J'; } for (int l = 0, r = 0, c = 0; l < N; l++) { while (r < N && c < K) { c += S[r] == 'O'; r++; } O[l] = (c == K ? r : N + 1); c -= S[l] == 'O'; } for (int l = 0, r = 0, c = 0; l < N; l++) { while (r < N && c < K) { c += S[r] == 'I'; r++; } I[l] = (c == K ? r : N + 1); c -= S[l] == 'I'; } int ans = N + 1; for (int i = 0; i < N; i++) { if (J[i] >= N || O[J[i]] >= N || I[O[J[i]]] > N) { continue; } ans = min(ans, I[O[J[i]]] - i - 3 * K); } cout << (ans == N + 1 ? -1 : ans) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...