如果你第一个样例得出结果是 3
查看原帖
如果你第一个样例得出结果是 3
851600
Lezy233楼主2024/9/25 20:36

你可能和我一样使用 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;
2024/9/25 20:36
加载中...