Cod sursa(job #1625039)

Utilizator andi12Draghici Andrei andi12 Data 2 martie 2016 16:10:00
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;
const int N=1000005;
char s[N];
int pred[N];
int main()
{
    ifstream in("prefix.in");
    ofstream out("prefix.out");
    int t,i,k,j,max;
    in>>t>>ws;
    for(i=1;i<=t;i++)
    {
        in.getline(s+1,N);
        pred[1]=0;
        k=0;
        max=0;
        for(j=2;s[j]!=0;j++)
        {
            while(k>0 && s[j]!=s[k+1])
                k=pred[k];
            if(s[j]==s[k+1])
                k++;
            pred[j]=k;
            if(j%(j-pred[j])==0 && pred[j]!=0)
            {
                if(j>=max)
                    max=j;
            }
        }
        out<<max<<"\n";
    }
    return 0;
}