Submission #821482

# Submission time Handle Problem Language Result Execution time Memory
821482 2023-08-11T10:46:37 Z Alihan_8 JJOOII 2 (JOI20_ho_t2) C++17
100 / 100
7 ms 5984 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 > n ){
        ans = -1;
    }
    cout << ans;

    cout << '\n';
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 320 KB Output is correct
2 Correct 0 ms 316 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 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 1 ms 320 KB Output is correct
9 Correct 1 ms 320 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 320 KB Output is correct
2 Correct 0 ms 316 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 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 1 ms 320 KB Output is correct
9 Correct 1 ms 320 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 324 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 324 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 316 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 0 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 0 ms 320 KB Output is correct
25 Correct 1 ms 320 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 1 ms 320 KB Output is correct
28 Correct 1 ms 340 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 0 ms 324 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 340 KB Output is correct
35 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 320 KB Output is correct
2 Correct 0 ms 316 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 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 1 ms 320 KB Output is correct
9 Correct 1 ms 320 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 324 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 0 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 324 KB Output is correct
19 Correct 1 ms 340 KB Output is correct
20 Correct 1 ms 316 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 0 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 0 ms 320 KB Output is correct
25 Correct 1 ms 320 KB Output is correct
26 Correct 1 ms 340 KB Output is correct
27 Correct 1 ms 320 KB Output is correct
28 Correct 1 ms 340 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 340 KB Output is correct
32 Correct 0 ms 324 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 340 KB Output is correct
35 Correct 0 ms 340 KB Output is correct
36 Correct 7 ms 5068 KB Output is correct
37 Correct 7 ms 5472 KB Output is correct
38 Correct 7 ms 5460 KB Output is correct
39 Correct 7 ms 5472 KB Output is correct
40 Correct 7 ms 5472 KB Output is correct
41 Correct 7 ms 5484 KB Output is correct
42 Correct 7 ms 5472 KB Output is correct
43 Correct 4 ms 3540 KB Output is correct
44 Correct 5 ms 4320 KB Output is correct
45 Correct 7 ms 5592 KB Output is correct
46 Correct 7 ms 5600 KB Output is correct
47 Correct 7 ms 5588 KB Output is correct
48 Correct 6 ms 5600 KB Output is correct
49 Correct 5 ms 3808 KB Output is correct
50 Correct 7 ms 5588 KB Output is correct
51 Correct 6 ms 5608 KB Output is correct
52 Correct 5 ms 5600 KB Output is correct
53 Correct 6 ms 5856 KB Output is correct
54 Correct 5 ms 5440 KB Output is correct
55 Correct 5 ms 5728 KB Output is correct
56 Correct 5 ms 5984 KB Output is correct