小红拿到了一个长度为n的数组 a,每次操作小红可以选择数组中的任意一个数减去 x,小红一共能进行 k 次。小红想在 k 次操作之后,数组的最大值尽可能小。请你返回这个最大值。n为1~10^5a,k,x为1~10^9示例输入:5 3 51 4 3 11 2输入为n,k,x 以及数组a的值示例输出:3想知道这道题有没有比堆排更好的做法,我堆排一直tle。import java.util.PriorityQueue;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); long k = scanner.nextLong(); long x = scanner.nextLong(); long[] a = new long[n]; PriorityQueue pq = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1)); for(int i =0;i a[i] = scanner.nextLong(); pq.add(a[i]); } while(k>0){ Long top = pq.poll(); Long nextTop = pq.peek(); Long dif = top-nextTop; Long num = dif/x; num = Math.min(k-1,num); k-=(num+1); top-=(num+1)*x; pq.add(top); } System.out.println(pq.peek()); }}