4658: 【GESP2412三级】数字替换
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:8
解决:4
题目描述
⼩杨有⼀个包含$n$ 个数字的序列$A$ ,即$A=\{ a_1,a_2,...,a_n\}$,他想将其中⼤于k的数字都替换为序列的最大值,将其中小于k的数字都替换为序列的最小值,请你帮他计算出替换后的序列。
输入
第一行包含两个正整数$n,k$ ,含义如题面所示。
第二行包含$n$ 个数字,代表序列$A$ 。
第二行包含$n$ 个数字,代表序列$A$ 。
输出
输出$n$ 个整数,代表替换后的结果。
样例输入 复制
5 0
-2 -1 0 1 2
样例输出 复制
-2 -2 0 2 2
提示
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a[100010];
int main() {
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int max_value = a[1], min_value = a[1];
for (int i = 1; i <= n; i++) {
max_value = max(max_value, a[i]);
min_value = min(min_value, a[i]);
}
for (int i = 1; i <= n; i++) {
if (a[i] > k) {
a[i] = max_value;
} else if (a[i] < k) {
a[i] = min_value;
}
if (i != n) {
cout << a[i] << " ";
} else {
cout << a[i] << endl;
}
}
return 0;
}