Submission #1323680

#TimeUsernameProblemLanguageResultExecution timeMemory
1323680hyyhJJOOII 2 (JOI20_ho_t2)C++20
0 / 100
1 ms332 KiB
#include <iostream>
#include <math.h>
#include <vector>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <iomanip>
#include <set>
#include <bitset>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
using piii = tuple<int,int,int>;
#define endl '\n'

int main(){
    int n,m;cin >> n >> m;
    string str;cin >> str;
    vector<int> vcJ;
    vector<int> vcO;
    vector<int> vcI;
    for(int i{};i < n;i++){
        char k = str[i];
        if(k == 'J') vcJ.emplace_back(i);
        if(k == 'O') vcO.emplace_back(i);
        if(k == 'I') vcI.emplace_back(i);
    }
    m--;
    int ans = 1e9;
    for(int i{m};i < vcO.size();i++){
        auto itJ = lower_bound(vcJ.begin(),vcJ.end(),vcO[i-m]-1)-vcJ.begin();
        auto itI = upper_bound(vcI.begin(),vcI.end(),vcO[i])-vcI.begin();
        if(itJ < m || itI+m >= vcI.size()) continue;
        ans = min(ans,vcI[itI+m]-vcJ[itJ-m]);
    }
    if(ans == 1e9) cout << -1;
    else cout << ans-((m+1)*3)+1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...