제출 #702663

#제출 시각아이디문제언어결과실행 시간메모리
702663speedyArdaJJOOII 2 (JOI20_ho_t2)C++14
100 / 100
13 ms2524 KiB
#include "bits/stdc++.h"
using namespace std;
const int MAXN = 2e5+5;
int pref_o[MAXN];
int main() 
{
    int n, k;
    cin >> n >> k;
    string s;
    cin >> s;
    vector<int> j_idx, i_idx;
    for(int i = 0; i < n; i++)
    {
        pref_o[i] = 0;
        if(i > 0)
            pref_o[i] = pref_o[i - 1];
        if(s[i] == 'J')
            j_idx.push_back(i);
        else if(s[i] == 'O')
            pref_o[i]++;
        else
            i_idx.push_back(i);
        
    }

    int ans = 1e9;
    for(int i = k - 1; i < j_idx.size(); i++)
    {
        int j_dif = j_idx[i] - j_idx[i - (k - 1)] - (k-2) - 1;

        int l = 0, r = i_idx.size() - 1 - k + 1;
        while(l <= r)
        {
            int m = (l + r) / 2; // First i;
            if(i_idx[m] < j_idx[i])
            {
                l = m + 1;
                continue;
            }
            int temp = j_dif + (i_idx[m + k - 1] - i_idx[m] - (k-2) - 1);
            int first_i = i_idx[m];
            int last_j = j_idx[i];
            if(pref_o[first_i] - pref_o[last_j] >= k)
            {
                temp += first_i - last_j - k - 1;
                ans = min(ans, temp);
                r = m - 1;
            } else
                l = m + 1;
            //cout << ans << "  " << j_idx[i] << " " << i_idx[m] << " " << i << " " << m << "\n";
        }

        
    }

    if(ans == 1e9)
        cout << "-1\n";
    else
        cout << ans << "\n";
}

컴파일 시 표준 에러 (stderr) 메시지

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:27:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(int i = k - 1; i < j_idx.size(); i++)
      |                        ~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...