Cod sursa(job #599135)

Utilizator cosmyoPaunel Cosmin cosmyo Data 28 iunie 2011 01:27:57
Problema Prefix Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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;
    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);
        v = i;
        while(k && 2 * L[v] >= v){
            if(2 * L[v] == v)
                max = i;
            v = L[v];
        }
    }

    return max;
}

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

    return 0;
}