백준

11286번: 절댓값 힙

Honyack 2024. 5. 6. 16:38

https://www.acmicpc.net/problem/11286

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

struct Compare
{
	bool operator()(const pair<int, int>& a, const pair<int, int>& b)
	{
		if (abs(a.first) == abs(b.first))return a.first > b.first;
		return abs(a.first) > abs(b.first);
	}
};

int main()
{
	int N,num;
	cin >> N;

	priority_queue<pair<int, int>, vector<pair<int, int>>, Compare> heap;
	vector<int> result;

	while (N--)
	{
		cin >> num;
		if (num == 0)
		{
			if (heap.empty())
			{
				result.push_back(0);
			}
			else
			{
				result.push_back(heap.top().first);
				heap.pop();
			}
		}
		else
		{
			heap.push({ num,abs(num) });
		}
	}
	for (auto v : result)
		cout << v << endl;

	return 0;
}

'백준' 카테고리의 다른 글

1377번: 버블 소트  (0) 2024.05.16
2750번: 수 정렬하기  (0) 2024.05.06
2164번: 카드2  (0) 2024.05.05
17298번 : 오큰수 구하기  (0) 2024.05.04
1874번: 스택 수열  (0) 2024.05.02