제출 #896823

#제출 시각아이디문제언어결과실행 시간메모리
896823ace5JJOOII 2 (JOI20_ho_t2)C++17
100 / 100
20 ms3312 KiB
#include <bits/stdc++.h>

using namespace std;

#define int int64_t

vector<vector<int>> b(26);

int n;

int go(int pos,int k,int c)
{
    if(pos == n)
        return n;
    int ind = lower_bound(b[c].begin(),b[c].end(),pos)-b[c].begin() + k - 1;
    return (ind < b[c].size() ? b[c][ind] : n);
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int k;
    cin >> n >> k;
    string s;
    cin >> s;
    for(int j = 0;j < n;++j)
    {
        b[s[j]-'A'].push_back(j);
    }
    int ans = n+1;
    for(int j = 0;j < n;++j)
    {
        int lp = go(go(go(j,k,'J'-'A'),k,'O'-'A'),k,'I'-'A');
        if(lp != n)
        {
            ans = min(ans,lp-j+1);
        }
    }
    cout << (ans == n+1 ? -1 : ans-k*3);
    return 0;
}

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

ho_t2.cpp: In function 'int64_t go(int64_t, int64_t, int64_t)':
ho_t2.cpp:16:17: warning: comparison of integer expressions of different signedness: 'int64_t' {aka 'long int'} and 'std::vector<long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     return (ind < b[c].size() ? b[c][ind] : n);
      |             ~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...