B4066 [GESP202412 三级] 数字替换

· · 题解

欢迎报名洛谷网校,报名课程可以获得对应组别的知识点讲解与答疑服务,期待和大家一起进步!点击图片即可报名。

:::align{center} :::

本题考查一维数组。

使用一维数组存储序列 A,使用擂台法可以在读入的同时计算出序列 A 的最大值和最小值。由于题目中保证了 |a_i|\leq 10^5(即:-10^5\leq a_i\leq 10^5),因此最小值初始化为 100001,最大值初始化为 -100001 即可。这一部分的参考代码:

int maxv = ________, minv = ________;
for (int i = 1; i <= n; i++) {
    cin >> a[i];
    ________; // 获取序列的最大值
    ____; // 获取序列的最小值
}

接着第二次循环,进行替换操作。根据题意,对于每个 a_i,判断其是否大于 k 或是小于 k,若是则进行对应的替换,随后输出即可。这一部分的参考代码:

for (int i = 1; i <= n; i++) {
    if (________) // 大于 k 替换为最大值
        ________;
    if (________) // 小于 k 替换为最小值
        ________;
    cout << a[i] << " ";
}