Cod sursa(job #1716578)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 13 iunie 2016 09:34:41
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define lim 1000005
int pi[lim],n;
char v[lim],ch;
int prefix(){
    int i,poz=0;
    pi[1]=0;
    for(i=2;i<=n;i++){
        while(poz!=0&&v[poz+1]!=v[i])
            poz=pi[poz];
        if(v[poz+1]==v[i])
            poz++;
        pi[i]=poz;
    }
    i=n;
    while((i>=1)&&((pi[i]==0)||(i%(i-pi[i])!=0)))
        i--;
    return i;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("prefix.in","r");
    fout=fopen("prefix.out","w");
    int i,j,t,rasp;
    fscanf(fin,"%d",&t);
    ch=fgetc(fin);
    for(j=1;j<=t;j++){
        i=1;
        v[i]=fgetc(fin);
        while(v[i]>='a'&&v[i]<='z'){
            i++;
            v[i]=fgetc(fin);
        }
        n=i-1;
        rasp=prefix();
        fprintf(fout,"%d\n",rasp);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}