}
m=p;
for(j=1,p=1;p
p=0;
for(i=n-j;i
for(i=0;i
swap(x,y);
p=1;
x[sa[0]]=0;
for(i=1;i
if(cmp(y,sa[i-1],sa[i],j)) x[sa[i]]=p-1;
else x[sa[i]]=p++;
}
}
}
void calh(int n)
{
int i,k;
for(i=1;i<=n;i++) rank[sa[i]]=i;
k=0;
for(i=0;i
int tmp=sa[rank[i]-1];
for(;r[i+k]==r[tmp+k];k++)
;
height[rank[i]]=k;
k --k:0;
}
}
int main()
{
int i,n,st1;
scanf("%d",&n);
{
scanf("%d",&r[i]);
}
r[n]=-inf;
da(n+1);
calh(n);
int mi=inf;
for(i=2;i
if(rank[i]
mi=rank[i];
st1=i;
}
}
for(i=st1;i
int rec=1;
for(i=0;i
r[i+st1]=r[i];
}
r[2*st1]=-inf;
da(st1*2+1);
calh(2*st1);
mi=inf;
for(i=1;i
if(rank[i]
mi=rank[i];
rec=i;
}
}
for(i=rec;i
printf("%d\n",r[i%st1]);
}
}
作者:Wings_of_Liberty