Cod sursa(job #2101369)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 7 ianuarie 2018 12:41:32
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <cstring>

using namespace std;
ifstream fi("prefix.in");
ofstream fo("prefix.out");
const int NMAX=1e7+5;
int S[NMAX],t,n,k;
string A;
int main()
{
    fi>>t;
    while(t--)
    {
        fi>>A;
        n=A.size();
        A="#"+A;
        S[0]=-1;
        S[1]=0;
        k=0;
        for(int i=2;i<=n;i++)
        {
            while(k>0 && A[i]!=A[k+1])
                k=S[k];
            if(A[i]==A[k+1])
                k++;
            S[i]=k;
        }
        int rez=0;
        for(int i=1;i<=n;i++)
            if(S[i] && i%(i-S[i])==0)
                rez=i;
        fo<<rez<<"\n";
    }
    fi.close();
    fo.close();
    return 0;
}