》》》点我查看「视频」详解》》》
[GESP202412 三级] 数字替换
题目描述
小杨有一个包含 n n n 个数字的序列 A A A,即 A = [ a 1 , a 2 , … , a n ] A=[a_1,a_2,\ldots,a_n] A=[a1,a2,…,an],他想将其中大于 k k k 的数字都替换为序列的最大值,将其中小于 k k k 的数字都替换为序列的最小值,请你帮他计算出替换后的序列。
输入格式
第一行包含两个正整数 n , k n,k n,k,含义如题面所示。
第二行包含 n n n 个数字,代表序列 A A A。
输出格式
输出 n n n 个整数,代表替换后的结果。
样例 #1
样例输入 #1
5 0
-2 -1 0 1 2
样例输出 #1
-2 -2 0 2 2
提示
对于全部数据,保证有 1 ≤ n ≤ 1 0 5 1\le n\le 10^5 1≤n≤105, ∣ k ∣ , ∣ a i ∣ ≤ 1 0 5 |k|,|a_i|\le 10^5 ∣k∣,∣ai∣≤105。
AC_Code
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int w[N], n, k;
int main()
{
cin >> n >> k;
int maxv = -1e5, minv = 1e5;
for(int i = 0; i < n; i ++)
{
cin >> w[i];
maxv = max(maxv, w[i]);
minv = min(minv, w[i]);
}
for(int i = 0; i < n; i ++)
if(w[i] < k) cout << minv << " ";
else if(w[i] > k) cout << maxv << " ";
else cout << w[i] << " ";
return 0;
}
》》》点我查看「视频」详解》》》