Cod sursa(job #2434239)

Utilizator ArkhamKnightyMarco Vraja ArkhamKnighty Data 1 iulie 2019 12:26:18
Problema Prefix Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream cin("prefix.in");
ofstream cout("prefix.out");
char s[1000001];
long k,urm[1000001],i,rez,t;

int main()
{
    int n;
    cin >> n;
    cin.getline(s,1000000);
    for(int j = 1; j <= n; ++j)
    {
        cin.getline(s + 1, 1000001);
        k = 0;
        rez = 0;
        t = strlen(s + 1);
        urm[1] = 0;
        for(int i = 2 ; i <= t; ++i)
        {
            while( k > 0 && s[i] != s[k+1]) k = urm[k];
            if(s[i] == s[k+1]) k++;
            urm[i] = k;
            if(k > 0 && (i % (i - k) == 0)) rez = i;
        }
        cout << rez << '\n';
    }
    return 0;
}