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
#include<bits/stdc++.h>
using namespace std;

string s;
int allmeets[8009], inperson[8009], remote[8009];

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n, k, t, a, b, c, wyn = -1;
    cin>>n>>k>>t>>s;
    for(int i=1; i<=n; i++) {
        if(s[i-1] == '1') inperson[i] = allmeets[i] = 1;
        else if(s[i-1] == '2') remote[i] = allmeets[i] = 1;
        inperson[i] += inperson[i-1];
        allmeets[i] += allmeets[i-1];
        remote[i] += remote[i-1];
    }
    for(int i=1; i<=n-2*t+1; i++) {
        for(int j=i+t; j<=n-t+1; j++) {
            a = allmeets[i+t-1] - allmeets[i-1] + allmeets[j+t-1] - allmeets[j-1];
            a += inperson[i-1] + inperson[n] - inperson[j+t-1];
            b = remote[i-1] + remote[n] - remote[j+t-1];
            if(a <= k) {
                b = max(0, b - (k - a));
                c = i - 1 + n - (j + t - 1) - b;
                wyn = max(wyn, c);
            }
        }
    }
    a = inperson[n];
    b = remote[n];
    if(a <= k) {
        b = max(0, b - (k - a));
        c = n - b;
        wyn = max(wyn, c);
    }
    cout<<wyn;
    return 0;
}