Pagini recente » Cod sursa (job #76330) | Cod sursa (job #377103) | Cod sursa (job #926397) | Cod sursa (job #2979732) | Cod sursa (job #173518)
Cod sursa(job #173518)
#include <stdio.h>
#define prim 666013
char text[17000];
int ap[prim+10];
int i,j,p,q,r,n,k,ok,sol;
unsigned int x,put;
int main()
{
freopen("substr.in","r",stdin);
freopen("substr.out","w",stdout);
scanf("%d %d ",&n,&k);
scanf("%s ",text+1);
p=0;q=n+1;
while (p+1<q)
{
r=(p+q)/2;
ok=0;
x=0;put=1;
for (i=1; i<=r; i++)
{
x=x*29+text[i]-'a';
if (i>1) put=put*29;
}
for (i=0; i<=prim-1; i++)
ap[i]=0;
text[n+1]='a';
for (i=r+1; i<=n+1; i++)
{
x=x%prim;
ap[x]++;
if (ap[x]>=k) ok=1;
x=x-put*(text[i-r]-'a');
x=x*29+text[i]-'a';
}
if (ok)
{
p=r;
sol=r;
}
else q=r;
}
printf("%d\n",sol);
return 0;
}