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

int sb[8'002];
int sz[8'002];

int main()
{
   ios::sync_with_stdio(0); cin.tie(0);
   int n, k, t;
   int ans = -1;
   string tab;
   cin >> n >> k >> t >> tab;
   for (int i = 0; i < n; i++)
   {
      sb[i+1] += sb[i];
      sz[i+1] += sz[i];
      sb[i+1] += (!!(tab[i] == '1'));
      sz[i+1] += (!!(tab[i] == '2'));
   }
   if (sb[n] <= k)
   {
      ans = n - max(0, sz[n] - k);
   }
   for (int a = 0; a <= n; a++)
   {
      for (int b = a + t; b + t <= n; b++)
      {
         int miss = sb[a + t] + sb[n] - sb[b] + sz[a+t] - sz[a] + sz[b + t] - sz[b];
         if (miss > k)continue;
         ans = max(ans, a + n - b - t - max(0, sz[a] + sz[n] - sz[b+t] - k + miss));
      }
   }
   cout << ans << '\n';

}