#C6A. 数值范围调整

数值范围调整

题意:

给定闭区间 [l,r][l,r]。对于一个整数 xx:

  • 如果 x<lx<l,则将其调整为 ll;
  • 如果 x>rx>r,则将其调整为 rr;
  • 否则保持 xx 不变。

本题采用函数接口提交方式(Template)。请选择 C 语言,只提交下面函数的完整定义:

int clamp(int x, int l, int r);

其中,参数 x 表示待调整的整数,l 和 r 分别表示闭区间的左右端点。函数应返回调整后的整数。

系统会将你提交的函数定义插入下面代码的指定位置,再进行编译和运行:

#include <stdio.h>

int clamp(int x, int l, int r);

/* 在此处插入你提交的函数定义。 */

int main(void) {
    int n, l, r;
    scanf("%d%d%d", &n, &l, &r);

    for (int i = 0; i < n; i++) {
        int x;
        scanf("%d", &x);
        printf("%d\n", clamp(x, l, r));
    }

    return 0;
}

因此,你只需要实现 clamp 函数,不需要读入数据或输出结果,也不要提交 main 函数。

输入格式:

以下输入由系统提供的外部代码读入。

第一行三个整数 nn、ll、rr(1≤n≤2×1051 \le n \le 2 \times 10^5,−109≤l≤r≤109-10^9 \le l \le r \le 10^9),分别表示待调整整数的数量和闭区间的两个端点。

第二行 nn 个整数 x1,x2,…,xnx_1,x_2,\ldots,x_n(−109≤xi≤109-10^9 \le x_i \le 10^9),表示需要调整的整数。

输出格式:

以下输出由系统提供的外部代码完成。

输出 nn 行,第 ii 行表示调用 clamp(x_i, l, r) 得到的返回值。

样例:

样例输入:

5 2 8
-1 2 5 8 10

样例输出:

2
2
5
8
8

样例解释:

闭区间为 [2,8][2,8]。

−1<2-1<2,因此调整为 22;22、55 和 88 均位于区间内,保持不变;10>810>8,因此调整为 88。