import java.util.*;
import java.io.*;
class Solution {
public static void main(String args[]) throws Exception {
//System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
for (int t = 0; t < 10; t++) {
int dumpCount = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
while (st.hasMoreTokens()) {
int value = Integer.parseInt(st.nextToken());
minHeap.add(value);
maxHeap.add(value);
}
while (dumpCount-- > 0) {
minHeap.add(minHeap.poll() + 1);
maxHeap.add(maxHeap.poll() - 1);
}
int ret = maxHeap.poll() - minHeap.poll();
sb.append(String.format("#%d %d\n", t + 1, ret));
}
System.out.println(sb);
}
}
dumpCount
만큼 평탄화 작업을 수행한 후에 가장 높은 높이와 가장 낮은 높이의 차이를 출력하면 된다.최대힙
과 최소힙
에 각각 넣는다.dumpCount
만큼 작업을 수행한다.최대힙
과 최소힙
에서 각각 한개씩 꺼낸후 최대힙
은 1빼고 넣고, 최소힙
은 1더하고 넣으면 된다.