Cod sursa(job #2288924)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 24 noiembrie 2018 09:37:39
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>
#define nmax 1000005

using namespace std;

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

int nn,n,m,k,p[nmax],nr,v[1005];
char c[nmax];

int main() {
    int i,j;
    f>>nn;
    f.getline(c+1,nmax);
    for (j=1;j<=nn;j++) {
        f.getline(c+1,nmax);
        n=strlen(c+1);
        //cout<<"-->"<<c+1;
        for (i=1;i<=n;i++) p[i]=0;
        k=0;
        for (i=2;i<=n;i++) {
            while (k!=0 && c[k+1]!=c[i]) k=p[k];
            if (c[k+1]==c[i]) k++;
            p[i]=k;
        }
        for (i=n;i>=1;i--) {
            if (p[i]!=0 && i%(i-p[i])==0) {
                g<<i<<'\n';
                break;
            }
            if (i==1) g<<0<<'\n';
        }
    }
    return 0;
}