Cod sursa(job #2221072)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 13 iulie 2018 00:20:28
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");

string s;

vector<int> pi(1000005, 0);

int main() {
    ios::sync_with_stdio(false);
    int tests;
    in >> tests;
    while(tests --) {
        s.clear();
        int sol = 0;
        in >> s;
        s = " " + s;
        pi.clear();
        int k = 0;
        for(int i = 2; i < s.size(); i ++) {
            while(k > 0 && s[k + 1] != s[i])
                k = pi[k];
            if(s[k + 1] == s[i])
                k ++;
            pi[i] = k;
            if(i % (i - pi[i]) == 0 && pi[i])
                sol = i;
        }
        out << sol << "\n";
    }

    return 0;
}