Cod sursa(job #2288992)

Utilizator danin01Nastase Daniel danin01 Data 24 noiembrie 2018 10:11:35
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include<string.h>
#include <stdio.h>
#define NMAX 1000005
using namespace std;

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

char s[NMAX];

int k=0,N,n;

int P[NMAX];

int main()
{
    f>>N;
    for(int q=1 ;q<=N;++q)
    {
        f>>s+1;
        n = strlen(s+1);
        k=0;
        for(int i=2;i<=n;++i)
        {

            for(;k!=0 && s[k+1]!=s[i];)k=P[k];
            if(s[k+1]==s[i])k++;
            P[i]=k;

        }

        for(int i=n;i>=1;--i)
        {
            if(P[i]!=0 && i%(i-P[i])==0)
            {
                g<<i<<'\n';
                i=0;
            }
            if(i==1)
            {
                g<<"0"<<'\n';
            }
        }

    }



    return 0;
}