[PS] 백준 11286 - 절댓값 힙

DevHwan·2022년 1월 23일
0

BOJ

목록 보기
2/19
post-thumbnail

📖 문제


백준 11286

힙 자료구조와 구조체 비교연산을 이용하여 해결합니다.

💻 코드


#include<iostream>
#include<queue>
#include<math.h>
using namespace std;
int n;

struct dataa
{
	int number;
	int abs_number;
};

struct cmp
{
	bool operator()(dataa &d1, dataa &d2)
	{
		if (d1.abs_number != d2.abs_number)
			return d1.abs_number > d2.abs_number;
		return d1.number > d2.number;
	}
};

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	priority_queue<dataa, vector<dataa>, cmp> pq;
	dataa data1;

	cin >> n;
	int x;
	int number;
	while (n--)
	{
		cin >> x;
		if (x != 0)
		{
			data1.number = x;
			data1.abs_number = abs(x);
			pq.push(data1);
		}
		else if (x == 0)
		{
			if (pq.empty())
			{
				cout << "0\n";
				continue;
			}
			else
			{
				cout << pq.top().number << "\n";
				pq.pop();
			}
		}
	}
}

profile
달리기 시작한 치타

0개의 댓글