Pentru această operație este nevoie să te autentifici.

Cod sursă (job #206156)

Utilizator avatar Robert Popovici Robert Robert IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp | 0,73 kb
Rundă Arhiva de probleme Status evaluat
Dată 22 feb. 2016 20:53:30 Scor 90
#include <cstdio>
#define MAXN 500000
char v[MAXN+1];
int pi[MAXN+1];
int main(){
    FILE*fi,*fout;
    int n,i,j;
    char a;
    fi=fopen("bart.in" ,"r");
    fout=fopen("bart.out" ,"w");
    a=fgetc(fi);
    n=0;
    while((a>='A'&&a<='Z')||(a>='a'&&a<='z')){
        v[++n]=a;
        a=fgetc(fi);
    }
    pi[1]=0;
    for(i=2;i<=n;i++){
        if(v[i]==v[pi[i-1]+1])
           pi[i]=pi[i-1]+1;
        else{
           j=i-1;
           while(j>1&&v[pi[j]+1]!=v[i])
              j=pi[j];
           pi[i]=pi[j]+1;
           if((j==0||j==1)&&v[1]!=v[i])
               pi[i]=0;
        }
    }
    for(i=1;i<=n-pi[n];i++)
        fprintf(fout,"%c" ,v[i]);
    fclose(fi);
    fclose(fout);
    return 0;
}