Pagini recente » Cod sursa (job #386411) | Cod sursa (job #2191390) | Cod sursa (job #2074947) | Cod sursa (job #1295356) | Cod sursa (job #1242585)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("raci.in");
ofstream out("raci.out");
struct lt{char p,u;} lit[500005];
char a[5000004],s,kk;
char cuv[500004][12];
int ult[30];
int maxim[30],d[30];
int main()
{int n,k=1,i,di,j,lg,mx=0;
in>>n>>di;
in.get();
in.getline(a,5000004);
lg=strlen(a);
for(i=0;i<lg;i++)
{
s=a[i];
if(isalpha(s))
{
cuv[k][j]=s;
j++;
kk=s;
}
else
{
lit[k].u=a[i-1];
k++;
j=0;
}
}
for(i=1;i<=k;i++)
lit[i].p=cuv[i][0];
for(i=1;i<=k;i++)
{
if(i-ult[lit[i].p-96]<=di||!ult[lit[i].p-96])
{
d[lit[i].u-96]=d[lit[i].p-96]+1;
ult[lit[i].u-96]=i;
if(d[lit[i].u-96]>maxim[lit[i].u-96])
maxim[lit[i].u-96]=d[lit[i].u-96];
if(mx<maxim[lit[i].u-96])
mx=maxim[lit[i].u-96];
}
else
{
if(d[lit[i].u-96]>maxim[lit[i].u-96])
maxim[lit[i].u-96]=d[lit[i].u-96];
if(mx<maxim[lit[i].u-96])
mx=maxim[lit[i].u-96];
d[lit[i].u-96]=0;
ult[lit[i].u-96]=i;
}
}
out<<mx<<'\n';
return 0;
}