Cod sursa(job #2453114)

Utilizator Savu_Stefan_CatalinSavu Stefan Catalin Savu_Stefan_Catalin Data 2 septembrie 2019 15:19:35
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
int t,i,j,k,n,b[1000001],rez;
char c,a[1000001];
int main ()
{
in>>t;
in.get (c);
for (i=1;i<=t;++i)
{
  in>>a+1;
  n=strlen(a+1);

    rez=0;
    k=1;
    for (j=2;j<=n;++j)
    {
        while (k!=1&&a[j]!=a[k]) k=b[k-1]+1;
        if (a[j]==a[k])
        {
            b[j]=k;
            k++;
        }
        else b[j]=0;

    }
    for (j=n;j>=2;--j)
    {
         if (b[j]!=0&&j%(j-b[j])==0)
         {
             rez=j;
             break;
         }
    }
    out<<rez<<'\n';
}
            return 0;
}