Cod sursa(job #2221071)

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

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

string s;

int main() {
    ios::sync_with_stdio(false);
    int tests;
    in >> tests;
    while(tests --) {
        s.clear();
        int sol = 0;
        in >> s;
        s = " " + s;
        vector<int> pi(s.size(), 0);
        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;
}