文章
1
粉丝
0
获赞
1
访问
114
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, s;
cin >> n >> s;
vector <int> A;
for (int i = 0; i < n; i++) {
int n;
cin >> n;
A.push_back(n);
}
sort(A.begin(), A.end());
long long ans = 0;
int mid = A[n / 2 ];
if (mid == s) {
ans = 0;
} else if (mid > s) {
for (int i = n / 2 ; i >= 0; i--) {
if (A[i] > s)
ans += abs(A[i] - s);
}
} else if (mid < s) {
for (int i = n / 2 ; i < n; i++) {
if (A[i] < s)
ans += abs(A[i] - s);
}
}
cout << ans;
}
排序数组;
找到中位数 A[n / 2]
;
如果中位数大于 s
,就把中位数及其左侧大于 s
的数降到 s
;
如果中位数小于 s
,就把中位数及其右侧小于 s
的数升到 s
。
登录后发布评论
暂无评论,来抢沙发