Cod sursa(job #3189666)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 6 ianuarie 2024 13:23:29
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t, n, i, j, a[1000002], r;
string p;

static inline void Rezolva() {
    fin >> p;
    n = p.size();
    j = 0;
    r = 0;
    for(i = 1; i < n; i++) {
        while(j > 0 && p[j] != p[i]) j = a[j - 1];
        if(p[j] == p[i]) j++;
        a[i] = j;

        int f1 = i + 1;
        int f2 = i + 1 - a[i];
        if(f1 % f2 == 0 && f1 / f2 > 1) r = f1;
    }
    fout << r << "\n";
}

int main() {
    fin >> t;
    while(t--) Rezolva();

    return 0;
}