Cod sursa(job #2550973)

Utilizator norryna07Alexandru Norina norryna07 Data 19 februarie 2020 12:24:52
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>
#define N  1000005
using namespace std;

ifstream fin ("prefix.in");
ofstream fout ("prefix.out");

int urm[N];

int main()
{
    int t, n, j, k, sol;
    char v[N];
    fin>>t;
    fin.get();

    for (int i=1; i<=t; ++i)
    {
        fin.getline(v+1, N);
        n=strlen(v+1);
        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;
        }
        fout<<sol<<'\n';
    }
    fin.close();
    fout.close();
    return 0;
}