Cod sursa(job #2359732)

Utilizator EricEric Vilcu Eric Data 1 martie 2019 08:58:51
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
char a[1000001];int q[1000001];
int n,Q,l;
void INIQ()
{
    q[1]=0;int j=0;
    for(int i=2;i<=n;++i)
    {
        while(a[j+1]!=a[i]&&j>0)j=q[j];
        if(a[j+1]==a[i])++j;
        q[i]=j;
    }
}
int main()
{
    for(f>>Q;Q>0;--Q)
    {
        f>>(a+1);a[0]=' ';n=strlen(a)+1;
        INIQ();
        for(l=n;l>0;--l)if(q[l]>=(l+1)/2){while(l%(l-q[l])!=0)--l;break;}
        g<<l<<'\n';
    }
}