小红拿到了一个长度为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<Long> pq = new PriorityQueue<>((o1, o2) -> o2.compareTo(o1));for(int i =0;i<n;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());}}