Submission #1250969

#TimeUsernameProblemLanguageResultExecution timeMemory
1250969gry3125JJOOII 2 (JOI20_ho_t2)C++20
100 / 100
7 ms2388 KiB
#include <bits/stdc++.h> #define pb push_back #define ll long long int #define all(v) (v).begin(),(v).end() #define fi first #define se second using namespace std; int main() { int n, k; string s; cin >> n >> k >> s; vector<int> ji, ii, po(n+1); for (int i = 1; i <= n; i++) { if (s[i-1] == 'J') ji.pb(i); if (s[i-1] == 'I') ii.pb(i); po[i] = po[i-1]; if (s[i-1] == 'O') po[i]++; } int L = 0, R = 0; int mn = 1000000; while (L+k-1 < ji.size() && R+k-1 < ii.size()) { while (R+k-1 < ii.size() && (ji[L+k-1] > ii[R] || po[ii[R]]-po[ji[L+k-1]-1] < k)) { R++; } if (R+k-1 < ii.size() && !(ji[L+k-1] > ii[R] || po[ii[R]]-po[ji[L+k-1]-1] < k)) { mn = min(mn, ii[R+k-1]-ji[L]+1-3*k); } L++; } if (mn == 1000000) mn = -1; cout << mn; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...