Submission #1182532

#TimeUsernameProblemLanguageResultExecution timeMemory
1182532ALTAKEXEJJOOII 2 (JOI20_ho_t2)C++20
100 / 100
10 ms3024 KiB
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
using namespace std;
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].push_back(i);
        if (s[i] == 'O')
            v[1].push_back(i);
        if (s[i] == 'I')
            v[2].push_back(i);
    }
    ll ans = 1e9;
    for (ll i = k - 1; i < v[0].size(); i++)
    {
        ll l = v[0][i - k + 1];
        ll y = upper_bound(all(v[1]), v[0][i]) - v[1].begin();
        if (y + k - 1 >= v[1].size())
        {
            continue;
        }
        y = v[1][y + k - 1];
        y = upper_bound(all(v[2]), y) - v[2].begin();
        if (y + k - 1 >= v[2].size())
        {
            continue;
        }
        y = v[2][y + k - 1];
        ans = min(ans, (n - 3 * k) - (l + (n - y - 1)));
    }
    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...