Cod sursa(job #2555091)

Utilizator Andrei012Trache Andrei Andrei012 Data 23 februarie 2020 18:13:47
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;
char sir[1000005];
int pref[1000005];
int main()
{
    ifstream cin("prefix.in");
    ofstream cout("prefix.out");

    int n,i,k,teste,j,rez;
    cin>>teste;
    for(j=1;j<=teste;j++){
        cin>>sir+1;
        n=strlen(sir+1);
        k=0;
        pref[1]=0;
        rez=0;
        for(i=2;i<=n;i++){
            while(k>0 && sir[k+1]!=sir[i])
                k=pref[k];
            if(sir[k+1]==sir[i])
                k++;
            pref[i]=k;
            if(pref[i]>0 && i%(i-pref[i])==0)
                rez=i;
        }
        cout<<rez<<'\n';
    }
    return 0;
}