1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <bits/stdc++.h>
using namespace std;

int pref1[ 8003 ];
int pref2[ 8003 ];
int pref3[ 8003 ];

int res = -1;

void print(int t[], int n){
    for(int i = 1; i <= n; ++i){
        cout << t[ i ] << " ";
    }
    cout << '\n';
}

int main(){

    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, k, t; cin >> n >> k >> t;

    for(int i = 1 ; i <= n; ++i){
        char c; cin >> c;
        if(c == '1'){
            pref1[ i ] = pref1[ i - 1 ] + 1;
            pref2[ i ] = pref2[ i - 1 ];
            pref3[ i ] = pref3[ i - 1 ];
        }
        else if (c == '2'){
            pref1[ i ] = pref1[ i - 1 ];
            pref2[ i ] = pref2[ i - 1 ] + 1;
            pref3[ i ] = pref3[ i - 1 ];
        }
        else{
            pref1[ i ] = pref1[ i - 1 ];
            pref2[ i ] = pref2[ i - 1 ];
            pref3[ i ] = pref3[ i - 1 ] + 1;
        }
    }

    // print(pref1, n);
    // print(pref2, n);
    // print(pref3, n);



    for(int i = 1; i <= n - (2*t) + 1; ++i){
        for(int j = i + (2*t) - 1; j <= n; ++j){
            //cout << i << " " << j << " ";
            int k_left = k;
            k_left -= pref1[ i + t - 1 ] - pref1[ i - 1 ] + pref1[ j ] - pref1[ j - t ];
            k_left -= pref2[ i + t - 1 ] - pref2[ i - 1 ] + pref2[ j ] - pref2[ j - t ];
            //cout << k_left << '\n';
            int cnt = pref1[ i - 1 ] + pref1[ n ] - pref1[ j ];
            k_left -= cnt;
            if(k_left < 0){
                continue;
            }
            cnt += pref3[ i - 1 ] + pref3[ n ] - pref3[ j ];
            int left_2 = pref2[ i - 1 ] + pref2[ n ] - pref2[ j ];
            cnt += min(left_2, k_left);
            res = max(res, cnt);
        }
    }
    
    if(k >= pref1[ n ]){
        res = max(res, pref3[ n ] + min(k, pref2[ n ] + pref1[ n ]));
    }

    cout << res << '\n';

    return 0;

}