把$($看作$-1$,$)$看作$1$,设$a$为前缀和,则相当于找两个位置$x,y$使得$a[x]=a[y]$,且$a[x]$是$[x,y]$的区间最大值. 求出询问区间的最大值$o$,然后找到$o$在该区间内最左和最右的出现位置,将其作为答案. 那么剩下的答案只可能在$[l,o)$或$(o,r]$,以$[l,o)$为例. 通过单调栈求出每个位置$i$往右最长延伸长度$g[i]$,使得中间$a[i]$是区间最大值,且$a[i]=a[i+g[i]]$. 那么在$[l,o)$中,因为$o$的阻隔,…