https://www.acmicpc.net/problem/14235
코드설명
우선순위큐(PriorityQueue, Collections.reverseOrder()) 문제입니다.
우선순위큐 선언시 아래와 같이 내림차순으로 정렬하도록 구현할 수 있습니다.
private static PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
또, 이를 통해 자동으로 정렬되며 시간복잡도는 삽입, 삭제 시 O(log n)으로 줄어듭니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Main {
private static int N, T, K, M, L;
private static int[] arr;
private static int answer = 0;
private static PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
if(a == 0) {
if(pq.size() > 0) {
System.out.println(pq.poll());
}else {
System.out.println(-1);
}
}
else {
for(int j=0;j<a; j++) {
pq.offer(Integer.parseInt(st.nextToken()));
}
}
}
}
}