Cod sursa(job #2327675)

Utilizator MAXIMILLIANMUSOHYEAHYEAH MAXIMILLIANMUS Data 24 ianuarie 2019 20:00:05
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
 
using namespace std;
 
ifstream fin("prefix.in");
ofstream fout("prefix.out");
 
string s;
int n;
 
const int N=1000000+7;
int pr[N];
 
void build()
{
    pr[0]=0;
    int p=1,cur=0;
    while(p<n)
    {
        if(s[p]==s[cur])
        {
            cur++;
            pr[p]=cur;
            p++;
        }
        else
        {
            if(cur==0)
            {
                p++;
            }
            else
            {
                cur=pr[cur-1];
            }
        }
    }
}
 
int main()
{
    int t; fin>>t;
    while(t--)
    {
        fin>>s;
        n=s.size();
        for(int i=0;i<=n+10;i++) pr[i]=0;
        build();
        int res=0;
        for(int i=0;i<n;i++)
        {
            int j=i+1;
            //fout<<j<<" : "<<pr[i]<<"\n";
            if(j%(j-pr[i])==0 && pr[i])
            {
                res=j;
            }
        }
        fout<<res<<"\n";
    }
    return 0;
}
/**
{1}
{1}
{1}
**/