Cod sursa(job #2672608)

Utilizator AndreiD31Dragan Andrei AndreiD31 Data 14 noiembrie 2020 11:54:47
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int N,l,i,n,k,ok,p[1000010];
char s[1000010];
int main()
{
    f>>N;
    for(l=1;l<=N;l++)
    {
        f>>s+1;
        n=strlen(s+1);
        k=0;
        for(i=2;i<=n;i++){

            for(;k!=0 && s[k+1]!=s[i];)k=p[k];
            if(s[k+1]==s[i])k++;
            p[i]=k;

        }

        ok=0;

        for(i=n;i>=1;i--)
            if(p[i]!=0&& i%(i-p[i])==0){
                ok=1;
                g<<i<<'\n';
                break;
            }

        if(ok==0)g<<0<<'\n';

    }
    return 0;
}