vidigummy KAU/알고리즘 공부(백준!)

BOJ 11286 절댓값 힙

vidi 2021. 1. 14. 23:26

www.acmicpc.net/problem/11286

 

11286번: 절댓값 힙

첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

알고보니 1+2였다.

#include <iostream>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;

int main(){
	cin.tie(0);
	cout.tie(0);
	int N;
	cin >> N;
	priority_queue<int, vector<int>> ansP;
	priority_queue<int, vector<int>> ansN;
	while (N--)
	{
		int tmp;
		cin >> tmp;

		if (tmp == 0) {
			if (ansP.empty()&&ansN.empty())
				cout << "0\n";
			else {
				if (ansN.empty()) {
					cout << -1 * ansP.top() << endl;
					ansP.pop();
				}
				else if (ansP.empty()) {
					cout << ansN.top() << endl;
					ansN.pop();
				}
				else if (-1 * ansP.top() < -1 * ansN.top()) {
					cout << -1*ansP.top() << endl;
					ansP.pop();
				}
				else {
					cout << ansN.top() << endl;
					ansN.pop();
				}
				
			}
		}
		else {
			if (tmp > 0) {
				ansP.push(-1 * tmp);
			}
			else {
				ansN.push(tmp);
			}
		}
	}
	return 0;
}

'vidigummy KAU > 알고리즘 공부(백준!)' 카테고리의 다른 글

BOJ 9663 N-Queen  (0) 2021.01.16
BOJ N과 M 시리즈  (0) 2021.01.16
BOJ 11279/1927 최대힙/최소힙  (0) 2021.01.14
BOJ 1202 보석도둑  (0) 2021.01.14