Cod sursa(job #2558451)

Utilizator radubigColtos Radu radubig Data 26 februarie 2020 16:27:44
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <iostream>
#include <cstring>
#define lim 1000000
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");

char a[lim+5];
int p[lim+5];
int t,i,n,mx;

int main()
{
    in>>t; in.get();
    for(int k=1; k<=t; k++)
    {
        memset(p, 0, sizeof p);
        in.getline(a+1, lim+5);
        n=strlen(a+1);
        int st = 0, rez=0;
        for(i=2;i<=n;i++)
        {
            while(st>0 && a[st+1]!=a[i])
                st = p[st];
            if(a[st+1] == a[i]) st++;
            p[i]=st;
            if(p[i] > 0 && i%(i-p[i])==0)
                rez = i;
        }
        out<<rez<<'\n';
    }
    return 0;
}