Cod sursa(job #2729441)

Utilizator Davla2Stancu Vlad Davla2 Data 24 martie 2021 18:41:11
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <cstring>

using namespace std;

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

const int N=1e6+1;

char a[N];
int pred[N];

int main()
{
    int t,lung;
    in>>t;
    for(int k=1; k<=t; k++)
    {
        in>>(1+a);
        int n=strlen(1+a),ans=0;
        pred[1]=0;
        lung=0;
        for(int i=2; i<=n; i++)
        {
            while(lung>0 && a[i]!=a[lung+1])
            {
                lung=pred[lung];
            }
            if(a[i]==a[lung+1])
            {
                lung++;
            }
            pred[i]=lung;
            if(lung>0 && i%(i-lung)==0)
            {
                ans=max(ans, i);
            }
        }
        /*for(int i=1; i<=n; i++)
        {
            out<<pred[i]<<" ";
        }*/
        out<<ans<<"\n";
    }
    return 0;
}