Cod sursa(job #599543)

Utilizator cosmyoPaunel Cosmin cosmyo Data 29 iunie 2011 00:42:23
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <cstring>
using namespace std;
const int N = 1000005;
char s[N];
int t, L[N];

inline int prefix(){
    int v, k, n = strlen(s), i, max = 0;
    int sol[100005],nr;
    L[1] = 0;
    for(i = 2; i <= n; ++i){
        k = L[i - 1];
        while(k && s[k] != s[i - 1])
            k = L[k];
        if(s[k] == s[i - 1])
            ++k;
        L[i] = k;
    //    printf("%d %d\n", i, k);
        if(k && i % (i - k) == 0)
            max = i;
    }
  //  printf("\n");
    return max;
}

int main() {
    ifstream fin("prefix.in");
    ofstream fout("prefix.out");
    int i;
    fin >> t;
    for(i = 1; i <= t; ++i) {
        fin >> s;
        fout <<  prefix() << '\n';;
    }

    return 0;
}