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())); } } } } }