Cod sursa(job #2123959)

Utilizator boboomBoomerang boboom Data 6 februarie 2018 19:14:46
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <cstring>
#define nmax 1000002
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");

char s[nmax];
char t[nmax];
int p[nmax];

int main()
{
    int n;
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>s;
        strcpy(t,s);
        s[0]=' ';
        s[1]=NULL;
        strcat(s,t);
        int lg=strlen(s);
        p[1]=0;
        int q=0;
        for(int i=2;i<lg;i++)
        {
            while(q&&s[q+1]!=s[i])
            {
                q=p[q];
            }
            if(s[q+1]==s[i])
            {
                q++;
            }
            p[i]=q;
        }
        int k;
        for(k=lg-1;k>0;k--)
        {
            int re=k-p[k];
            if(k%(k-p[k])==0&&p[k]>0){
                break;
            }
        }
        fout<<k<<"\n";
    }
    return 0;
}