제출 #1328011

#제출 시각아이디문제언어결과실행 시간메모리
1328011superbibiJJOOII 2 (JOI20_ho_t2)C++20
0 / 100
0 ms332 KiB
#include <iostream>
#include <string>
using namespace std;

int vj[200005], vo[200005], vi[200005];

int main()
{
    int n, k, cj = 1, co = 1, ci = 1, ans, pj = 1, po = 1, pi = 1;
    string s;
    cin >> n >> k >> s;
    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == 'J')
        {
            vj[cj++] = i;
        }
        if (s[i] == 'O')
        {
            vo[co++] = i;
        }
        if (s[i] == 'I')
        {
            vi[ci++] = i;
        }
    }
    ans = n - 1;
    while (pj + k - 1 <= cj && po + k - 1 <= co && pi + k - 1 <= ci)
    {
        while (po + k - 1 <= co && vo[po] <= vj[pj + k - 1])
        {
            po++;
        }
        if (po + k - 1 <= co)
        {
            while (pi + k - 1 <= ci && vi[pi] <= vo[po + k - 1])
            {
                pi++;
            }
        }
        if (pj + k - 1 <= cj && po + k - 1 <= co && pi + k - 1 <= ci)
        {
            ans = min(ans, (vi[pi + k - 1] - vj[pj] + 1) - 3 * k);
        }
        pj++;
    }
    if (ans == n + 1)
    {
        cout << -1;
    }
    else
    {
        cout << ans;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...