Cod sursa(job #2733122)

Utilizator CatalinPangaleanuCatalin Pangaleanu CatalinPangaleanu Data 29 martie 2021 22:48:44
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <cstring>

using namespace std;

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

string s;

int lps[1000001];

int main()
{   ios::sync_with_stdio(false);
    fin.tie(nullptr), fout.tie(nullptr);
    int Q, j, i, ans;
    fin>>Q;
    while (Q--)
    {   fin>>s;
        j=0;
        memset(lps, 0, sizeof lps);
        for (i=1;i<s.size();)
            if (s[i]==s[j])
            {   ++j;
                lps[i]=j;
                ++i;
            }
            else if (j)
                    j=lps[j-1];
                else
                    ++i;
        ans=0;
        for (i=s.size()-1;i>=0;--i)
            if (lps[i] && !((i+1)%(i-lps[i]+1)))
            {   ans=i+1;
                break;
            }
        fout<<ans<<'\n';
    }
    fin.close();
    fout.close();

    return 0;
}