lll heigh(int x,lll y,lll z)
{
ll imax=floor((1.0-b[x])/c[x]);
if(c[x]>=0) return b[x]*(z-y+1)+c[x]*(z-y+1)*(y+z)/2;
if(imax<y) return z-y+1;
if(imax>r) return b[x]*(z-y+1)+c[x]*(y+z)*(z-y+1)/2;
return b[x]*(imax-y+1)+c[x]*(y+imax)*(imax-y+1)/2+z-imax;
}
这个函数(也就是第一篇题解的calc函数),不难发现第 4 行c[x]*(z-y+1)*(y+z) 三个 109 相乘会爆掉,所以要用 __int128。