rt,k是一个计算斜率的函数,其他的先不需要管
求助大佬
for(int i=1;i<=n;i++)
{
ll yA=y[i]-R,yB=y[i]-L;
pl=GetPL(yA);pr=GetPR(yB);
if(pl>pr){calc(yA,yB,i);continue;}
else calc(yA,y[pl],i),calc(y[pr],yB,i);
while(h<=t&&q[h]<pl)h++;
while(p<pl-1)p++;
while(p<pr){p++;while(h<t&&K(q[t-1],q[t])<K(q[t],p))t--;q[++t]=p;}
for(int j=pl;j<=pr;j++)ans=max(ans,K(j,i));
}