Cod sursa(job #1803484)

Utilizator darisavuSavu Daria darisavu Data 11 noiembrie 2016 15:35:18
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int n,urm[2000001],m,i,k,j;
char a[2000001];
int main()
{
    f>>m;
    f.get();
    while(m)
    {
    f.getline(a,2000002);
    n=strlen(a);
    urm[1]=0;
    k=0;
    for(i=2; i<=n; i++)
    {
        while(k>0&&a[k]!=a[i-1]) {k=urm[k];}
        if(a[k]==a[i-1]) {k++;}
        urm[i]=k;
    }
    for(j=n;j>=1;j--) if(urm[j]!=0&&(j%(j-urm[j]))==0) {g<<j<<'\n';break;}
    if(j==0) g<<"0"<<'\n';
    m--;
    }


    return 0;
}