题目解析
我们可以实现一个函数 int clamp(v, lo, hi)。
这个函数会返回 [lo,hi]\tt{[lo, hi]}[lo,hi] 区间内,距离 v\tt{v}v 最近的点。
那么显然,如果 v\tt{v}v 在 [lo,hi]\tt{[lo, hi]}[lo,hi] 内,函数返回 v\tt{v}v;若不在区间内,则有两种情况:
1. v<lo\tt{v \lt lo}v<lo,此时显然返回 lo\tt{lo}lo;
2. v>hi\tt{v \gt hi}v>hi,此时显然返回 hi\tt{hi}hi;
有了这个函数我们就可以判断 [A,B]\tt{[A, B]}[A,B] 内离 C\tt{C}C 最近的点和 C\tt{C}C 的距离是否小于等于 D\tt{D}D,从而得出答案。
* 在 C++17 此函数已加入标准库,定义在头文件 <algorithm> 中。
AC代码