Submission #922811

#TimeUsernameProblemLanguageResultExecution timeMemory
922811dimashhhJJOOII 2 (JOI20_ho_t2)C++17
13 / 100
2055 ms3632 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 12, MOD = 1e9 + 7; typedef long long ll; int n,k,A[N],B[N],C[N]; string s; vector<int> a,b,c; void test(){ cin >> n >> k >> s; s = "#" + s; for(int i = 1;i <= n;i++){ A[i] = A[i - 1]; B[i] = B[i - 1]; C[i] = C[i - 1]; if(s[i] == 'J'){ A[i]++; a.push_back(i); }else if(s[i] == 'O'){ B[i]++; b.push_back(i); }else{ C[i]++; c.push_back(i); } } if(min({(int)a.size(),(int)b.size(),(int)c.size()}) < k){ cout << -1 << '\n'; return; } int res = 1e9; for(int i = 0;i < (int)a.size();i++){ if(i + k - 1 >= (int)a.size()) break; int l = -1,r = c.size() - k; while(r - l > 1){ int j = (l + r) >> 1; if(i + k - 1 < (int)a.size() && B[c[j]] - B[a[i + k - 1]] >= k){ res = min(res,n - k * 3 - (a[i] - 1) - (n - c[j + k - 1])); r = j; }else{ l = j; } } for(int j = (int)c.size() - k;j >= 0;j--){ if(B[c[j]] - B[a[i + k - 1]] >= k){ res = min(res,n - k * 3 - (a[i] - 1) - (n - c[j + k - 1])); } } } if(res == 1e9) res = -1; cout<< res << '\n'; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); int T = 1; // cin >> T; while (T--) test(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...