forked from Sahaj-Bamba/HacktoberTrial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcho.cpp
More file actions
78 lines (70 loc) · 1016 Bytes
/
cho.cpp
File metadata and controls
78 lines (70 loc) · 1016 Bytes
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include<bits/stdc++.h>
#include<math.h>
#define rep(i,k,n) for(int i=k;i<n;i++)
#define ll long long
#define MOD 1000000007
using namespace std;
ll l[55],x,ar[100005];
ll func(ll);
ll n,m,t;
int main()
{
cin>>t;
ll ans=0;
while(t--)
{
ans=0;
rep(i,0,52)
l[i]=0;
cin>>n>>m;
rep(i,0,n)
{
char c;
scanf(" %c",&c);
ar[i]=c;
if(ar[i]<90)
ar[i]-=65;
else
ar[i]=ar[i]-97+26;
}
ll mid,low=0,high=n;
while(low<=high)
{
mid=(low+high)/2;
if(func(mid)==1)
{
low=mid+1;
ans=mid;
}
else
high=mid-1;
}
//rep(i,0,6)
//cout<<l[i]<<" ";
cout<<ans<<"\n";
}
}
ll func(ll mid)
{
ll flag=0,max=0;
rep(i,0,52)
l[i]=0;
rep(i,0,mid)
l[ar[i]]++;
rep(i,0,52)
if(l[i]>max)
max=l[i];
if((mid-max)<=m)
return 1;
rep(i,mid,n)
{
l[ar[i-mid]]--;
l[ar[i]]++;
rep(i,0,52)
if(l[i]>max)
max=l[i];
if((mid-max)<=m)
return 1;
}
return 0;
}