Cod sursa(job #799953)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 20 octombrie 2012 14:44:37
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");

int t[1111111];
char s[1111111];

inline bool perioada(int n)
{
    if(n%(n-t[n])==0 && n/(n-t[n])!=1)
        return true;
    return false;
}

void solve()
{
    int i,p=0,maxim=0;
    in.getline(s,1111111);
    t[0]=-1;
    t[1]=0;
    for(i=1;s[i];++i)
    {
        if(s[i]==s[t[i]])
            t[i+1]=t[i]+1;
        else
        {
            if(s[i]==s[0])
                 t[i+1]=1;
            else
                t[i+1]=0;
        }
        if(perioada(i+1))
            maxim=i+1;
    }
    out<<maxim<<"\n";
}

int main()
{
    int t,i;
    in>>t;
    in.getline(s,10);
    for(i=1;i<=t;++i)
        solve();
    return 0;
}