Cod sursa(job #2322433)

Utilizator vladboss2323Ciorica Vlad vladboss2323 Data 17 ianuarie 2019 19:37:21
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");

int t,n,pi[1000005];
char a[1000005];

void KMP()
{
    int i,lc=0,l=0;
    for(i=2; i<=n; i++)
    {
        while(lc>0 && a[i]!=a[lc+1])
        {
            lc=pi[lc];
        }
        if(a[i]==a[lc+1])
            lc++;
        pi[i]=lc;
        if(i%(i-pi[i])==0 && pi[i]!=0)
            l=max(l,i);
    }
          out<<l<<'\n';
    /*
    lc=0;
    for(i=1; i<m; i++)
    {
        while(lc>0 && a[i]!=c[lc+1])
        {
            lc=pi[lc];
        }
        if(a[i]==c[lc+1])
            lc++;
        if(lc==strlen(c)-1)
        {
            nr++;
        }
    }
    */
}
int main()
{
    int i;
    in>>t;
    for(i=1; i<=t; i++)
    {
        in>>(a+1);
        n=strlen(a+1);
        KMP();
    }
    return 0;
}