Cod sursa(job #2581052)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 14 martie 2020 14:33:28
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <bits/stdc++.h>
#define N 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");

int pi[N],m,n,cnt,t;
char a[N];


int main()
{
    fin>>t;
    for(int p=1;p<=t;p++)
    {
        fin>>a+1;
        n=strlen(a+1);
        int maxim=0,q=0;
        pi[1]=0;
        for(int i=2;i<=n;i++)
        {
            while (q && a[q+1] != a[i])
                q=pi[q];

            if (a[q+1]==a[i])q++;
            pi[i] = q;
            if(pi[i]!=0&&pi[i]%(i-pi[i])==0)maxim=i;
        }
        fout<<maxim<<'\n';
    }
}