Cod sursa(job #2004367)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 25 iulie 2017 18:06:49
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <cstring>
#include <fstream>
#define NMax 1000010

using namespace std;

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

char A[NMax];
int pi[NMax];
int N,i,T;
void make_prefix(int N)
{
    int q=0,max1=0,sol=0;
    for(int i=1;i<=N;i++)
        pi[i]=0;
    for(int i=2;i<=N;i++)
    {
        while(q && A[q+1]!=A[i])
            q=pi[q];
        if(A[q+1]==A[i])
            q++;
        pi[i]=q;
        if(pi[i]!=0)
        {
            if(i%(i-pi[i])==0)
                sol=i;
        }
    }
    g<<sol<<"\n";
}
int main()
{
    f>>T;
    while(T!=0)
    {
        N=0;
        f>>A;
        for(;(A[N]>='A' && A[N]<='Z') || (A[N]>='a' && A[N]<='z') || (A[N]>='0' && A[N]<='9');++N);
        for(i=N;i>=1;i--)
            A[i]=A[i-1];
        A[0]=' ';
        make_prefix(N);
        T--;
    }
}