Cod sursa(job #2554450)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 22 februarie 2020 21:54:18
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char ch[1000001];
int pi[1000001];
int main()
{
    int n,q,l,i,dif,lenfin;
    in>>n;
    in.get();
    for(q=1;q<=n;q++)
    {
        in.get(ch+1,1000001);
        in.get();
        l=strlen(ch+1);
        lenfin=0;
        int now=0;
        for(i=2;i<=l;i++)
        {
            while(now>0 && ch[now+1]!=ch[i])
            {
                now=pi[now];
            }
            if(ch[now+1]==ch[i])
            {
                now++;
            }
            pi[i]=now;
            dif=i-now;
            if(now!=0 && i%dif==0)
                lenfin=i;
        }
        out<<lenfin<<'\n';
    }
    return 0;
}