Cod sursa(job #2538316)

Utilizator theo2003Theodor Negrescu theo2003 Data 4 februarie 2020 17:36:14
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <vector>
#include <string>
#include <fstream>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
int main(){
    long long t;
    cin>>t;
    while(t--){
        string s;
        cin>>s;
        vector<int> pi(s.size(), 0);
        for(size_t x = 1, p = 0;x<s.size();x++){
            if(s[x] == s[p]){
                p++;
                pi[x] = p;
            }else{
                if(p && (s[x] != s[p]))
                    p = pi[p - 1];
                if(s[x] == s[p])
                    p++;
                pi[x] = p;
            }
        }
        for(long long x = s.size();x>=2;x--){
            if(pi[x - 1] && !(x % (x - pi[x - 1]))){
                cout<<x<<'\n';
                goto cnt;
            }
        }
        cout<<"0\n";
        cnt:continue;
    }
    return 0;
}