Cod sursa(job #1710963)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 30 mai 2016 08:30:21
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("prefix.in");
ofstream g("prefix.out");

int t, l1, i, maxim, p, prec[1000005];
char s[1000005];

int main(){
    f >> t; f.get();
    while (t){
        memset(s, 0, 1000004);
        f.getline(s+1, 1000004);
        //g << s+1 << ' ';
        maxim = 0;
        l1 = strlen(s+1);
        p = 0;
        memset(prec, 0, sizeof(prec));
        for (i = 2; i <= l1; i++){
            while (p && s[p+1] != s[i])
                p = prec[p];
            if (s[p+1] == s[i])
                p++;
            prec[i] = p;
            if (p>0 && i%(i-p) == 0) maxim = i;
        }
        g << maxim << '\n';
        t--;
    }
    return 0;
}