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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<bits/stdc++.h>
using namespace std;
int n, k, t, res = -1, eny, z;
string s;
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n >> k >> t >> s;

    int b = 0;
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '1') b++;
        if(s[i] == '2') z++;
        if(s[i] == '3') eny++;
    }
    if(b <= k) res = eny + b + min(k - b, z);

    for(int l = 0; l < n; l++)
    {
        //cout << s[1] << " ";
        int nb = 0, nj = 0, bb = 0, bj = 0, zb = 0, zj = 0;
        if(l - t < 0 || l + t >= n) continue;
        for(int i = l - t; i < l; i++)
        {
            if(s[i] == '3')
                nj++;
            else if(s[i] == '1')
                bj++;
            else
                zj++;
        }
        //if(l == 2) cout << (bool)(s[1] == '3') << " " << s[1] << " sdfsdf";
        for(int i = l + 1; i <= l + t; i++)
        {
            if(s[i] == '3')
                nj++;
            else if(s[i] == '1')
                bj++;
            else
                zj++;
        }
        if(s[l] == '1') bb = 1;
        else if(s[l] == '2') zb = 1;
        else nb = 1;
        for(int p = l; p < n; p++)
        {
            //if(l == 2 && p == 5) cout << "uwaga " << bj << " " << zj << " " << b << " " << bb << " ";
            if(k - bj - zj - (b - bb - bj) >= 0)
            {
                //if(l == 2 && p == 5) cout << "hje";
                res = max(res, eny - nb - nj + min(k - bj - zj - (b - bb - bj), z - zb - zj) + b - bb - bj);
                //if(eny - nb - nj + min(k - bj - zj - (b - bb - bj), z - zb - zj) + b - bb - bj == 4) cout << l << " " << p << '\n';
            }
            if(p + t + 1 >= n) break;
            if(s[p + 1] == '1')
            {
                bj--;
                bb++;
            }
            else if(s[p + 1] == '2')
            {
                zj--;
                zb++;
            }
            else
            {
                nj--;
                nb++;
            }
            if(s[p + 1 + t] == '1')
                bj++;
            else if(s[p + 1 + t] == '2')
                zj++;
            else    
                nj++;
        }
    }

    cout << res;
}

/*
7 0 1
3313113

1


5 2 1
31131
*/