Submission #706956

#TimeUsernameProblemLanguageResultExecution timeMemory
706956Dan4LifeJJOOII 2 (JOI20_ho_t2)C++17
100 / 100
21 ms2000 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) a.begin(),a.end() int n, k; string s; vector<int> v[26]; int main() { cin >> n >> k >> s; int ans = 1000000; for(int i = 0; i < n; i++) v[s[i]-'A'].pb(i); for(int i = 0; i < 26; i++) if(!v[i].empty()) sort(all(v[i])); for(int i = 0; i < n; i++){ if(s[i]!='J') continue; int J = 'J'-'A', O = 'O'-'A', I = 'I'-'A'; auto itr = lower_bound(all(v[J]),i)-begin(v[J]); if(itr+k-1>=sz(v[J])) break; int posJ = v[J][itr+k-1]; itr = lower_bound(all(v[O]),posJ)-begin(v[O]); if(itr+k-1>=sz(v[O])) break; int posO = v[O][itr+k-1]; itr = lower_bound(all(v[I]),posO)-begin(v[I]); if(itr+k-1>=sz(v[I])) break; int posI = v[I][itr+k-1]; ans = min(ans, posI-i+1-3*k); } cout << (ans==1000000?-1:ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...