Cod sursa(job #2663846)

Utilizator Rares31100Popa Rares Rares31100 Data 27 octombrie 2020 14:20:03
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("prefix.in");
ofstream out("prefix.out");
string sir;
int t, pref[1000001];

int main()
{
    in >> t;

    while(t--)
    {
        in >> sir;
        sir = " " + sir;
        int sol = 0;

        for(int i = 2, lung = 0; i < sir.size(); i++)
        {
            while(lung && sir[lung+1] != sir[i])
                lung = pref[lung];

            if(sir[lung+1] == sir[i])
                lung++;

            pref[i] = lung;

            if(pref[i] >= i/2 && pref[i]%(i-pref[i]) == 0)
                sol = i;
        }

        out << sol << '\n';
    }

    return 0;
}