Cod sursa(job #2991229)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 9 martie 2023 10:50:25
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
int main()
{
    int n;
    fin>>n;
    string cuv;
    for (int q=1; q<=n; q++) {
        fin>>cuv;
        int lps[1000005];
        int len=0;
        lps[0]=0;
        for (int i=1; i<cuv.size(); i++) {
            if (cuv[i]==cuv[len]) {
                len++;
                lps[i]=len;
            }
            else {
                if (len!=0) {
                    len=lps[len-1];
                    i--;
                }
                else {
                    lps[i]=0;
                }
            }
        }
        int ans = 0;
        for (int j = 2; j <= (int)cuv.size(); j++)
          if (lps[j - 1] != 0 && j % (j - lps[j - 1]) == 0)
            ans = j;
        fout<<ans<<'\n';
    }
    return 0;
}