Submission #821457

# Submission time Handle Problem Language Result Execution time Memory
821457 2023-08-11T10:30:26 Z Alihan_8 JJOOII 2 (JOI20_ho_t2) C++17
0 / 100
1 ms 320 KB
#include <bits/stdc++.h>

using namespace std;

#define all(x) x.begin(), x.end()
#define pb push_back
#define ln '\n'
#define int long long

template <class _T>
bool chmin(_T &x, const _T &y){
    bool flag = false;
    if ( x > y ){
        x = y; flag |= true;
    }
    return flag;
}

template <class _T>
bool chmax(_T &x, const _T &y){
    bool flag = false;
    if ( x < y ){
        x = y; flag |= true;
    }
    return flag;
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k; cin >> n >> k;
    string s; cin >> s;
    const int inf = 1e15 + 1;
    vector <int> pf(n + 1, inf), sf(n + 1, inf);
    deque <int> dq;
    for ( int i = 0; i < n; i++ ){
        if ( s[i] == 'J' ){
            dq.pb(i);
        }
        if ( (int)dq.size() > k ){
            dq.pop_front();
        }
        if ( (int)dq.size() < k ){
            continue;
        }
        pf[i + 1] = (i - dq[0] + 1) - k;
    }
    dq.clear();
    for ( int i = n - 1; i >= 0; i-- ){
        if ( s[i] == 'I' ){
            dq.push_front(i);
        }
        if ( (int)dq.size() > k ){
            dq.pop_back();
        }
        if ( (int)dq.size() < k ){
            continue;
        }
        sf[i + 1] = (dq[k - 1] - i + 1) - k;
    }
    vector <int> dp(n + 2, inf);
    for ( int i = n; i > 0; i-- ){
        dp[i] = min(dp[i + 1], sf[i] + i);
    }
    int it = 1, f = 0, ans = inf;
    for ( int i = 1; i <= n; i++ ){
        if ( i > 1 ){
            f -= (s[i - 1] == 'O');
        }
        while ( it + 1 <= n and f < k ){
            f += (s[it] == 'O');
            it++;
        }
        if ( f < k ){
            break;
        }
        chmin(ans, (pf[i] - i) + dp[it + 1] - k - 1);
    }
    if ( ans == inf ){
        ans = -1;
    }
    cout << ans;

    cout << '\n';
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 320 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 320 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 320 KB Output is correct
10 Incorrect 0 ms 212 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 320 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 320 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 320 KB Output is correct
10 Incorrect 0 ms 212 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 320 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 320 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 320 KB Output is correct
10 Incorrect 0 ms 212 KB Output isn't correct
11 Halted 0 ms 0 KB -