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

int main(){
   cin.tie(0)->sync_with_stdio(0);

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

   vector<int> spotkania(n+1), spotkaniaZdalne(n+1);
   int s = 0;

   for(int i = 1; i <= n; ++i){
      char a;
      cin >> a;
      if(a <= '2'){
         spotkania[i] = 1;
         s++; 
      }
      if(a == '2')spotkaniaZdalne[i] = 1;
      spotkania[i] += spotkania[i-1];
      spotkaniaZdalne[i] += spotkaniaZdalne[i-1]; 
   }

   s -= k;
   s = max(0,s);
   int wynik = -1;

   for(int i = t + 1; i <= n - t; ++i){
      for(int j = i; j <= n - t; ++j){
         if(s <= spotkaniaZdalne[i-t-1] + spotkania[j] - spotkania[i-1] + spotkaniaZdalne[n] - spotkaniaZdalne[j+t]){
            wynik = max(wynik, i - t - 1 + n - j - t - s + spotkania[j] - spotkania[i-1]);
         }
      }
   }
   if(spotkaniaZdalne[n] >= s){
      wynik = max(wynik, n-s);
   }

   cout<<wynik<<endl;

   return 0;
}