#include #include #include #include using namespace std; #define maxn 200007 int wwa[maxn],wwb[maxn],wwv[maxn],wws[maxn]; int cmp(int *r,int a,int b,int l){ return r[a]==r[b]&&r[a+l]==r[b+l]; } void da(int *r,int *sufix,int n,int m){ int i,j,p,*x=wwa,*y=wwb,*t; for(i=0;i=0;i--)sufix[--wws[x[i]]]=i; for(j=1,p=1;p=j) y[p++]=sufix[i]-j; for(i=0;i=0;i--) sufix[--wws[wwv[i]]]=y[i]; for(t=x,x=y,y=t,p=1,x[sufix[0]]=0,i=1;i 1; i--){ if(height[i+1] < n) break; if(sufix[i]>=n&&sufix[i]<=n*2) continue; if(sufix[i]>=n*3+1)continue; ans[cnt++].p = sufix[i]; } for(int i = 0;i < cnt; i++){ if(ans[i].p > 2*n){ ans[i].c =1; ans[i].p = n-(ans[i].p-2*n-1); } else { ans[i].p++; ans[i].c = 0; } } sort(ans,ans+cnt,comp); printf("%d %d\n",ans[0].p,ans[0].c); } return 0; }