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
#include <bits/stdc++.h>
#define LL long long

using namespace std;

int zadania[101000];
int biuro[10100];
int dom[10100];
int main()
{
    ios_base::sync_with_stdio(false);
    int n,k,t;
    char c;
    cin>>n>>k>>t;
    int answer=-1,straty=0,podwynik=0,robota=0;;
    for(int i=1;i<=n;i++)
    {
        cin>>c;
        dom[i]+=dom[i-1];
        biuro[i]+=biuro[i-1];
        zadania[i]+=zadania[i-1];
        if(c=='1')biuro[i]++;
        if(c=='2')dom[i]++;
        if(c=='3')zadania[i]++;
      //  cout<<dom[i]<<" DOM "<<biuro[i]<<" BIURO "<<zadania[i]<<endl;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=t;j<=i-t;j++)
        {
            straty+=biuro[i]-biuro[i-t]+dom[i]-dom[i-t];
            straty+=biuro[j]-biuro[j-t]+dom[j]-dom[j-t];
            //straty+=dom[i-t]-dom[j];
           // cout<<straty<<" DS "<<endl;
            straty+=biuro[j-t]+biuro[n]-biuro[i];
            robota+=biuro[i-t]-biuro[j]+dom[j-t]+dom[n]-dom[i]+dom[i-t]-dom[j];
            podwynik+=zadania[n]-(zadania[i]-zadania[j-t]);
             // cout<<straty<<" D "<<i<<" "<<j<<endl;
            if(straty<=k)answer=max(answer,podwynik+min(k-straty,robota));
            podwynik=0;
            straty=0;
            robota=0;
        }
    }
    if(biuro[n]<=k)
    {
        answer=max(answer,zadania[n]+min(biuro[n]+dom[n],k));
    }
    cout<<answer;





}