Cod sursa(job #2092225)

Utilizator refugiatBoni Daniel Stefan refugiat Data 21 decembrie 2017 13:09:23
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream si("prefix.in");
ofstream so("prefix.out");
string r,s;
int pr[1000005];
int main()
{
    int q;
    si>>q;
    while(q--)
    {
        si>>r;
        s=" ";
        s+=r;
        int n=s.size();
        int p=0;
        for(int i=2;i<=n;++i)
        {
            while(p&&s[p+1]!=s[i])
                p=pr[p];
            if(s[p+1]==s[i])
                p++;
            pr[i]=p;
        }
        int i;
        for(i=n;i;--i)
            if(pr[i]&&i%(i-pr[i])==0)
            {
                break;
            }
        so<<i<<'\n';
    }
    return 0;
}