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
#include <iostream>

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);
    int n, k, t, nb, pnb, loss, temp = -1;
    auto sum=new int[n][3];
    sum[0][0]=0;
    sum[0][1]=0;
    sum[0][2]=0;
    std::cin >> n >> k >> t;
    std::string str;
    std::cin >> str;
    for (int i=1; i<=n; i++) {
        sum[i][0]=sum[i-1][0];
        sum[i][1]=sum[i-1][1];
        sum[i][2]=sum[i-1][2];
        sum[i][str[i-1]-'1']+=1;
        //std::cout << i << ".\t" << sum[i][0] << '\t' << sum[i][1] << '\t' << sum[i][2] << '\n';
    }
    if (sum[n][0] <= k) {
        std::cout << (n-std::max(0, sum[n][0]+sum[n][1]-k)) << '\n';
        return 0;
    }
    for (int i=0; i<n; i++) {
        for (int j=i+t; j<=(n-t); j++) {
            nb= sum[i+t][1]-sum[i][1]
                +sum[j+t][1]-sum[j][1]
                +sum[i+t][0]
                +sum[n][0]-sum[j][0];
            pnb= sum[i][1]
                +sum[n][1]-sum[j+t][1];
            if (nb <= k) {
                temp=std::max(temp, n+i-j-t-std::max(0, pnb+nb-k));
            }
            //std::cout << i << '\t' << j << '\t' << nb << '\t' << pnb << '\t' << temp << '\n';
        }
    }
    std::cout << temp << '\n';
    return 0;
}