11286번: 절댓값 힙

myeongrangcoding·2023년 12월 27일
0

백준

목록 보기
41/47

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

풀이

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

struct Data
{
	int AbsoluteInteger;
	int OriginInteger;

	Data(int InAbsoluteInteger, int InOriginInteger)
		: AbsoluteInteger(InAbsoluteInteger), OriginInteger(InOriginInteger){};

	bool operator<(const Data& InOther) const
	{
		if (AbsoluteInteger == InOther.AbsoluteInteger)
		{
			return OriginInteger > InOther.OriginInteger;
		}
		else
		{
			return AbsoluteInteger > InOther.AbsoluteInteger;
		}
	}
};

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	//freopen("input.txt", "rt", stdin);

	int N{};
	cin >> N;

	priority_queue<Data> pQ;

	int Integer{};
	for (int i{}; i < N; ++i)
	{
		cin >> Integer;

		if (Integer)
		{
			pQ.push(Data(abs(Integer), Integer));
		}
		else
		{
			if (pQ.empty())
			{
				cout << 0 << '\n';
			}
			else
			{
				cout << pQ.top().OriginInteger << '\n';
				pQ.pop();
			}
		}
	}

	return 0;
}
profile
명랑코딩!

0개의 댓글