Submission #1155043

#TimeUsernameProblemLanguageResultExecution timeMemory
1155043Roman70JJOOII 2 (JOI20_ho_t2)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

   set<int>b[3];
int find_pos(int m, int pos, int k){
    auto it = b[m].lower_bound(pos);
    int cnt = 1;
    while(cnt != k){
        if(it == b[m].end()) break;
        it++;
        cnt++;
    }
    if(cnt == k) return *it;
    else return -1;
}

int main()
{
   int n,k;
   cin >> n >> k;
   string a;
   cin >> a;
   for(int i = 0;i<n;i++){
       if(a[i] == 'J') b[0].insert(i);
       else if(a[i] == 'O') b[1].insert(i);
       else b[2].insert(i);
   }
   int mnm = 1e9;
   for(int i =0;i<n;i++){
       if(a[i] == 'J'){
            int pos1 = find_pos(0,i,k);
            if(pos1 != -1){
                int pos2 = find_pos(1,pos1,k);
                if(pos2 != -1){
                    int pos3 = find_pos(2,pos2,k);
                    if(pos3 != -1){
                        int loc = pos3-i+1;
                        int cr = 3*k;
                        if(loc > 0 && cr > 0 && loc-cr>=0)
                        mnm = min(mnm,loc-cr);

                    }
                }
            }
       }
   }
   if(mnm != 1e9)
   cout << mnm;
   else cout << -1;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...