Cod sursa(job #2056565)

Utilizator victorobamavictor olaru victorobama Data 4 noiembrie 2017 12:21:47
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <string.h>

using namespace std;

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

int lnga,lngb,i,pi[1000005],q,pos[1000005],n,ii,imax;
char s[1000005];
int main()
{
   f>>n;
   f.get();
   for(ii=1;ii<=n;ii++)
   {
       imax=0;
       f.getline(s,1000005);
       lnga=strlen(s);
       for(i=lnga;i;i--)s[i]=s[i-1];s[0]=' ';

    i=0;q=0;
    for(i=2,pi[1]=0;i<=lnga;++i)
    {
        while(q && s[q+1] != s[i]) q=pi[q];

        if(s[q+1]==s[i])q++;

        pi[i]=q;

        if(q && i%(i-q)==0) imax=i;


    }
g<<imax<<'\n';

   }


   f.close();
   g.close();

    return 0;
}