Submission #1233251

#TimeUsernameProblemLanguageResultExecution timeMemory
1233251MuhammetJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
9 ms2732 KiB
#include "bits/stdc++.h" using namespace std; #define SZ(s) (int)s.size() const int N = 2e5 + 5; #define ll long long int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, k; string s; cin >> n >> k >> s; vector <vector <int>> v(3), a(3); for(int i = 0; i < n; i++) { if(s[i] == 'J') v[0].push_back(i); if(s[i] == 'O') v[1].push_back(i); if(s[i] == 'I') v[2].push_back(i); } for(int i = 0; i < 3; i++) { a[i].push_back(0); for(int j = 0; j < SZ(v[i])-1; j++) { a[i].push_back(a[i].back() + (v[i][j+1] - v[i][j] - 1)); } } int ans = 1e9; for(int i = 0; i + k - 1 < SZ(v[0]); i++) { int s = a[0][i + k - 1] - a[0][i]; int x = (v[0][i + k - 1] + 1); int t = lower_bound(v[1].begin(), v[1].end(), v[0][i + k - 1]) - v[1].begin(); if(t + k - 1 >= SZ(v[1])) break; int y = (v[1][t]); s += (y - x); s += a[1][t + k - 1] - a[1][t]; x = (v[1][t + k - 1] + 1); t = lower_bound(v[2].begin(), v[2].end(), v[1][t + k - 1]) - v[2].begin(); if(t + k - 1 >= SZ(v[2])) break; y = (v[2][t]); s += (y - x); s += a[2][t + k - 1] - a[2][t]; ans = min(ans, s); } cout << (ans == 1e9 ? -1 : ans); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...