제출 #1132576

#제출 시각아이디문제언어결과실행 시간메모리
1132576tsengangJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
11 ms3024 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second #define all(x) (x).begin(), (x).end() #define pb push_back #define ertunt return int main(){ ll n,k; cin >> n >> k; string s; cin >> s; vector<ll> v[3]; for(ll i = 0; i < n; i++){ if(s[i] == 'J')v[0].pb(i); if(s[i] == 'O')v[1].pb(i); if(s[i] == 'I')v[2].pb(i); } ll ans = 1e18; for(ll i = k - 1; i < v[0].size(); i++){ ll cur = (v[0][i] - v[0][i-k+1]) - k; ll y = lower_bound(all(v[1]),v[0][i]) - v[1].begin(); if(y+k-1 >= v[1].size())break; cur+=v[1][y] - v[0][i]; cur+=(v[1][y+k-1] - v[1][y]) - k; ll x = lower_bound(all(v[2]),v[1][y+k-1]) - v[2].begin(); if(x+k-1 >= v[2].size()) break; cur+=v[2][x] - v[1][y+k-1]; cur+= (v[2][x+k-1] - v[2][x]) - k; ans = min(cur,ans); } if(ans == 1e18)cout << -1; else cout << ans+1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...