非暴力题解
2026-03-05 19:10:19
发布于:广东
14阅读
0回复
0点赞
较优题解
包不暴力的好吧
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n); // 安全、现代、符合信奥规范
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// 一次扫描求 min/max —— O(n)
int minn = a[0], maxn = a[0];
for (int i = 1; i < n; i++) {
if (a[i] < minn) minn = a[i];
if (a[i] > maxn) maxn = a[i];
}
// 替换:注意题目逻辑是「大于k→max,小于k→min」,等于k保持不变
for (int i = 0; i < n; i++) {
if (a[i] > k) a[i] = maxn;
else if (a[i] < k) a[i] = minn;
// a[i] == k 时不做任何操作(题目隐含要求)
}
// 输出
for (int i = 0; i < n; i++) {
cout << a[i];
if (i < n-1) cout << ' ';
}
cout << '\n';
return 0;
}
这里空空如也







有帮助,赞一个