Cod sursa(job #614066)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 5 octombrie 2011 16:27:02
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <string.h>

#define max_n 1000000

using namespace std;

int i,n,m,l[max_n],t,rez,z,k;
char s[max_n];

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

int main () {
    in >> t;
    in.getline(s+1,max_n);
    for (z=1; z<=t; ++z) {
        in.getline(s+1,max_n);
        n=strlen(s+1);
        k=l[1]=0;
        rez=0;
        for (i=2; i<=n; i++) {
            while (k>0 && s[i]!=s[k+1])
                  k=l[k];
            if (s[i]==s[k+1]) k++;
            l[i]=k;
        }
        for (i=1; i<=n; ++i)
           if (l[i] && i%(i-l[i])==0)
               rez=i;
        out << rez << '\n';
    }
    return 0;
}