문제
각각 기준을 갖는 정수 type의 우선순위 큐가 3개 존재한다.
1. max_pq : 값이 큰게 우선순위이다.
2. min_pq : 값이 작은게 우선순위이다.
3. abs_pq : 절대값이 작은게 우선순위이다. 절대값이 같다면, 값이 작은게 우선순위이다.
쿼리 수 q가 주어지고, q개의 정수 x가 주어지면 아래 두가지 동작을 수행한다.
x != 0, push(x)
각각 pq에 x를 push 한다.
x == 0, pop()
각각 pq에서 pop을 진행한다.
pop이 되는 값을 max_pq, min_pq, abs_pq 순으로 출력한다.
pq가 비어있다면 -1 한개만 출력한다.
입력
첫 줄에 쿼리 수 q 가 주어진다.
다음 둘째 줄부터 q개의 줄에 걸쳐 x가 주어진다.
q <= 100,000
x : int 범위
출력
x가 0인 경우 한 줄에 max_pq의 top , min_pq의 top , abs_pq의 top 을 한 칸씩 띄어서 출력한다.
만약, pq가 비어있는 경우 -1 한개만 출력한다.
예제
13
-1
2
3
-10
4
0
0
-3
0
0
0
0
0
4 -10 -1
3 -1 2
2 -3 -3
-1 2 3
-3 3 4
-10 4 -10
-1
출처
teriusu