Cod sursa(job #1323211)

Utilizator felixiPuscasu Felix felixi Data 20 ianuarie 2015 20:07:46
Problema Prefix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <string>

using namespace std;

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

const int NMAX = 1000000;

int pi[NMAX+2];
int N, T;
string s;

int main() {
    in >> T;
    for( int t = 0;  t < T;  ++t ) {
        in >> s;
        N = s.size();
        s = "#" + s;
        int Sol = 0;
        pi[1] = 0;
        int K = 0;
        for( int i = 2;  i <= N;  ++i ) {
            while( K > 0 && s[K+1] != s[i] ) {
                K = pi[K];
            }
            if( s[K+1] == s[i] ) ++ K;
            pi[i] = K;

            if( pi[i] && i%(i-pi[i]) == 0 )  Sol = i;
        }

        out << Sol << '\n';
    }
    return 0;
}