你可能和我一样使用 std::lower_bound 和 std::upper_bound()
int L = std::ranges::upper_bound(alls, PII{val-lim, -1})-alls.begin(),
R = std::ranges::lower_bound(alls, PII{val+lim, -1})-alls.begin()-1;
注意 std::pair<int,int> 类型之间的比较是先比较 first,再比较 second,所以此时 std::upper_bound() 使用错误,应该改成:
int L = std::ranges::upper_bound(alls, PII{val-lim, n*2})-alls.begin(),
R = std::ranges::lower_bound(alls, PII{val+lim, -1})-alls.begin()-1;