Cod sursa(job #3163563)

Utilizator elisa.ipateElisa Ipate elisa.ipate Data 31 octombrie 2023 17:10:29
Problema Prefix Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <vector>
#include <fstream>



using namespace std;

#define nmax 1000000

int pi[nmax];

vector <int> v;

int main() {
    string s;
    ifstream cin("prefix.in");
    ofstream cout("prefix.out");
    int i, k, tst, n, m, x, rez, ok;
    cin >> m;
    for( tst = 0; tst < m; tst++ ) {
        cin >> s;
        rez = 0;
        ok = 0;
        k = 0;
        n = s.size();
        for( i = 1; i < n; i++ ) {
            while( k != 0 && s[k] != s[i] )
                k = pi[k-1];
            if( s[k] == s[i] )
                k++;
            pi[i] = k;

            if( pi[i] > 0 )
                ok = 1;
            if( ok == 1 && pi[i] == 0 )
                break;
            x = i+1 - pi[i];
            if( (i+1)%x == 0 )
                rez = i+1;
        }
        cout << rez << "\n";
        s.clear();
    }
    return 0;
}