Cod sursa(job #2672575)

Utilizator andreitabaraandrei2004 andreitabara Data 14 noiembrie 2020 11:12:19
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream in ("prefix.in");
ofstream out ("prefix.out");
int n,i,v[1000002],cmax,nr,m;
char p[1000002];
void construire (char p[])
{

    v[0]=0;
    int k=0;
    for(int q=1;q<m;q++)
    {
        while((k>0)&&(p[k]!=p[q]))
        {
            k=v[k-1];
        }
        if(p[k]==p[q])
        {
            k++;
        }
        v[q]=k;
        if(v[q]>0&&!((q+1)%(q-v[q]+1)))cmax=q+1;

    }
}
int main()
{
    in>>n;
in.get();
for(i=1;i<=n;i++)
{
in.getline(p,10000002);
m=strlen(p);
cmax=0;
construire(p);
out<<cmax<<'\n';
memset(v,0,sizeof(v));
}

    return 0;
}