Cod sursa(job #2550913)

Utilizator nicuvladNicu Vlad nicuvlad Data 19 februarie 2020 11:30:27
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <cstring>
#define N 1000001
using namespace std;
char v[N];
int urm[N];
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main()
{

    int t,i,j,k,n,sol;
    cin>>t;cin.get();
    for(i=1;i<=t;i++)
    {
        cin.getline(v+1,N);
        n=strlen(v+1);
        urm[0]=0; k=0;
        sol=0;
        for(j=2;v[j];++j)
        {
            while(k>0 && v[j]!=v[k+1])
                k=urm[k];
            if(v[j]==v[k+1])
                ++k;
            urm[j]=k;
          if(urm[j] != 0 && j % (j - urm[j]) == 0)
                sol = j;
        }
        cout<<sol<<"\n";
    }
    return 0;
}