有三个点WA,是哪里的问题
#include <stdio.h>
#include <stdlib.h>
int func(int h[], int x);
int compare(const void* a, const void* b);
int main() {
int w, n;
int i;
int h[1000006] = { 0 };
int result;
int left, right, mid;
int current_sum;
scanf("%d %d", &w, &n);
for (i = 0; i < w; i++) {
scanf("%d", &h[i]);
}
qsort(h, w, sizeof(int), compare);
left = 0;
right = h[0];
while (left <= right) {
mid = left + (right - left) / 2;
current_sum = func(h, mid);
if (current_sum >= n) {
result = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
printf("%d", result);
return 0;
}
int func(int h[], int x) {
int i;
long long sum = 0;
for (i = 0; h[i] > x; i++) {
sum += (h[i] - x);
}
return (int)sum;
}
int compare(const void* a, const void* b) {
return (*(int*)b - *(int*)a);
}