Programming/Baekjoon

백준 11286 절댓값 힙 [c++]

fishersheep 2022. 5. 31. 16:44
반응형
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <deque>

using namespace std;

struct cmp
{
	bool operator()(int a, int b)
	{	
		if (abs(a) == abs(b))	//절대값이 같은경우 더 작은 값을 후순위로 저장
			return a > b;
		else
			return abs(a) > abs(b);	//절대값이 더작은 값 후순위로 저장
		
	}
};

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

	int n;
	priority_queue<int,vector<int>,cmp>pq;
	int temp;
	vector<int>v;

	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> temp;

		if (temp != 0)
		{
			pq.push(temp);	//0이아니면 pq에 저장
		}
		else
		{
			if (pq.empty())
				v.push_back(0);	//우선순위큐가 비어있는 경우 vector에 0저장
			else
			{
				v.push_back(pq.top());	//vector에 가장 작은 값 저장
				pq.pop();
			}
		}

	}


	for (int i = 0; i < v.size(); i++)	//모든 결과 출력
		cout << v[i] << '\n';
	

	return 0;
}
반응형

'Programming > Baekjoon' 카테고리의 다른 글

백준 1931 회의실 배정 [c++]  (0) 2022.06.04
백준 2583 영역구하기 [c++]  (0) 2022.06.02
백준 1012 유기농배추 [c++]  (0) 2022.05.31
백준 1920 수찾기 [c++]  (0) 2022.05.30
백준 2980 도로와 신호등 [c++]  (0) 2022.05.21