请用c++写出以下题目的解答代码:NANA有nn个朋友,每个人有自己的身价a_ia i 。 她想平衡朋友们的身价,使得最大身价和最小身价之间的差值最小。 为了达成这一目标,她可以执行以下操作不超过kk次:选择一个人的身价并把它增大或者减小11。 她想让你帮她算一算,经过最多kk次修改操作之后,身价的最大值和最小值之间的差值最小是多少?
时间: 2023-05-14 09:07:23 浏览: 139
抱歉,我可以回答这个问题。以下是使用C语言编写的解答代码:
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int n, k;
scanf("%d%d", &n, &k);
int *a = (int *)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
qsort(a, n, sizeof(int), cmp);
int l = a[0], r = a[n - 1];
int ans = r - l;
for (int i = 1; i < n; i++) {
int d = a[i] - a[i - 1];
if (d * i <= k) {
k -= d * i;
l = a[i];
ans = r - l;
} else {
int x = k / i;
l += x;
ans = r - l;
break;
}
}
printf("%d\n", ans);
free(a);
return 0;
}
阅读全文