Pagini recente » Cod sursa (job #2415990) | Cod sursa (job #1161750) | Cod sursa (job #387852) | Cod sursa (job #2808031) | Cod sursa (job #1047527)
#include <stdio.h>
#include <unordered_map>
#define baza 131
#define mod 666013
using namespace std;
FILE*f=fopen("substr.in","r");
FILE*g=fopen("substr.out","w");
int n,k;
char v[20001];
unordered_map<int, int> h;
int main()
{
fscanf(f,"%d%d",&n,&k);
fgets(v+1,n+3,f);
int p=0;
int u=n;
while(p<=u)
{
int ok=0;
int m=(p+u)/2;
int b=1;
int nr=0;
for(int i=1;i<=m;++i)
{
nr+=v[i]*b;
b*=baza;
}
b/=baza;
h[nr]++;
if(k==1)
ok=1;
for(int i=m+1;!ok&&i<=n;++i)
{
nr/=baza;
nr+=v[i]*b;
h[nr]++;
if(h[nr]>=k)
{
ok=1;
break;
}
}
if(ok)
p=m+1;
else
u=m-1;
h.clear();
}
fprintf(g,"%d",u);
fclose(f);
fclose(g);
return 0;
}