Cod sursa(job #2984987)

Utilizator gabriel10tm@gmail.comGabriel Marian [email protected] Data 25 februarie 2023 14:19:39
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
#if 1
#define cin fin
#define cout fout
ifstream fin("prefix.in");
ofstream fout("prefix.out");
#endif // 1
const int nmx = 1e6 + 4;
int pi[nmx];
void calcPi(string& s){
    fill(pi,pi+s.size(),0);
    int j = 0;
    for(int i=1;i<s.size();i++){
        while(j>0 && s[j]!=s[i])
            j = pi[j-1];
        if(s[i]==s[j])
            j++;
        pi[i] = j;
    }
}
int main(){
    int n;
    cin >> n;
    while(n--){
        string s;
        cin >> s;
        calcPi(s);
        int ans = 0;
        for(int i=s.size()-1;i>=0;i--){
            int itr = 2*pi[i]-i-1;
            if(itr >= 0){
                if(itr%(i-pi[i]+1)==0){
                    ans = i+1;
                    break;
                }
            }
        }
        cout << ans << "\n";
    }
}