Submission #568140

#TimeUsernameProblemLanguageResultExecution timeMemory
568140Ronin13JJOOII 2 (JOI20_ho_t2)C++14
100 / 100
13 ms3648 KiB
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned ll
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define epb emplace_back
using namespace std;

const int inf = 1e9 + 1;

int main(){
    int n, k; cin >> n >> k;
    string s; cin >> s;
    vector <int> j;
    int ansp[n + 1];
    for(int i = 0; i < s.size(); i++){
        if(s[i] == 'O'){
            if(j.size() < k){
                ansp[i] = inf;
            }
            else{
                int x = j[j.size() - 1];
                int y = j[j.size() - k];
                ansp[i] = i - y - k;
            }
        }
        else if(s[i] == 'J')j.pb(i);
    }

    vector <int> i;
    int anss[n + 1];
    for(int p = s.size() - 1; p >= 0; p--){
            if(s[p] == 'O'){
                if(i.size() < k) anss[p] = inf;
                else{
                     int x = i[i.size() - 1];
                     int y = i[i.size() - k];
                     anss[p] = y - p  - k;
                }
            }
            else{if(s[p] == 'I') i.pb(p);}
    }
    vector <int> os;
    for(int p = 0; p < s.size(); p++) if(s[p] == 'O') os.pb(p);
    int ans = inf;
    for(int i = 0; i <= (int)os.size() - k; i++){
        int x = os[i];
        int y = os[i + k - 1];
        ans = min(ans, ansp[x] + anss[y] + y - x + 1 - k);
    }
    if(ans == inf) cout << -1;
    else cout << ans;
    return 0;
}

Compilation message (stderr)

ho_t2.cpp: In function 'int main()':
ho_t2.cpp:19:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for(int i = 0; i < s.size(); i++){
      |                    ~~^~~~~~~~~~
ho_t2.cpp:21:25: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   21 |             if(j.size() < k){
      |                ~~~~~~~~~^~~
ho_t2.cpp:25:21: warning: unused variable 'x' [-Wunused-variable]
   25 |                 int x = j[j.size() - 1];
      |                     ^
ho_t2.cpp:37:29: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   37 |                 if(i.size() < k) anss[p] = inf;
      |                    ~~~~~~~~~^~~
ho_t2.cpp:39:26: warning: unused variable 'x' [-Wunused-variable]
   39 |                      int x = i[i.size() - 1];
      |                          ^
ho_t2.cpp:47:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for(int p = 0; p < s.size(); p++) if(s[p] == 'O') os.pb(p);
      |                    ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...