Cod sursa(job #2286827)

Utilizator SqueekDanielTodasca Daniel SqueekDaniel Data 20 noiembrie 2018 21:09:31
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>

#define MAXN 1000005

int LPS[MAXN];

void ComputeLPS(int N, char String[]) {
    for (int i=2, Len=0; i<=N; ++i) {
        while (Len && String[i] != String[Len+1])
            Len = LPS[Len];
        if (String[i] == String[Len+1]) ++ Len;

        LPS[i] = Len;
    }
}

std::ifstream In("prefix.in");
std::ofstream Out("prefix.out");

int N;
char String[MAXN];

void Citire() {
    In >> String + 1;
    N = strlen(String+1);
}

void Rezolvare() {
    ComputeLPS(N, String);

    int Ans = 0;
    for (int i=2; i<=N; ++i)
        if (LPS[i] && i % (i-LPS[i]) == 0)
            Ans = i;
    Out << Ans << '\n';
}

int main()
{
    int T; In >> T;
    while (T--) {
        Citire();
        Rezolvare();
    }

    return 0;
}