Cod sursa(job #1242585)

Utilizator gbibBacotiu Gabi gbib Data 14 octombrie 2014 18:37:58
Problema Fractal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#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;
}