Cod sursa(job #2896973)

Utilizator MihneaCadar101Cadar Mihnea MihneaCadar101 Data 1 mai 2022 20:07:21
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;

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

const int nmax = 1e6 + 5;

int t, process[nmax];
string s;

void resolve() {
    int i = 1, len = 0;
    int n = s.size();
    while (i < n) {
        if (s[i] == s[len]) {
            ++len;
            process[i] = len;
            ++i;
        }
        else {
            if (len)
                len = process[len - 1];
            else {
                process[i] = 0;
                ++i;
            }
        }
    }
}

int main()
{
    fin >> t;
    while(t--) {
        fin >> s;
        resolve();
        int n = s.size(), maxi = 0, poz = 0;
        for (int i = n - 1; i > 0; --i) {
            if (process[i] == 0)
                continue;

            if ((i + 1) % (i + 1 - process[i]) == 0) {
                maxi = i + 1;
                break;
            }
        }

        fout << maxi << '\n';
    }
    return 0;
}