Cod sursa(job #218607)

Utilizator catalina5catalina serban catalina5 Data 2 noiembrie 2008 19:31:40
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#define max 1000001

using namespace std;

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

int n,nr,poz[max],sol,k;
char s[max];

//functie prefix KMP;
void prefix(){
    k=0;
    sol=0;
    for(int i=2;i<=n;i++){
        while(k&&s[k+1]!=s[i])
            k=poz[k];
        if(s[k+1]==s[i])
            k++;
        poz[i]=k;
        if(poz[i])
            if(!(i%(i-poz[i])))
                sol=i;
    }
}

void citire(){
    fin>>nr;
    fin.getline(s+1,max);
    for(int i=0;i<nr;i++){
        fin.getline(s+1,max);
        n=strlen(s+1);
        prefix();
        fout<<sol<<"\n";
    }
}

int main(){
    citire();
    fin.close();
    fout.close();
    return 0;
}