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

2022. 7. 10. 20:00알고리즘/백준

728x90

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

 

11286번: 절댓값 힙

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

www.acmicpc.net

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

struct comp {
	bool operator()(int a, int b) {
		if (abs(a) == abs(b)) {
			return a > b;
		}
		else {
			return abs(a) > abs(b);
		}
	}
};
priority_queue<long long int, vector<long long int>, comp>pq;
long long int count_mius[100001];
long long int result;
long long int n, m;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n;
	long long int k;
	for (long long int i = 0; i < n; i++) {
		cin >> k;
		
		if (k == 0) {
			if (pq.empty()) {
				cout << '0' << '\n';
			}
			else
			{
				cout << pq.top() << '\n';
				pq.pop();
			}
		}


		else {
			pq.push(k);
		}
	}
}

 

 

 

https://travelbeeee.tistory.com/126

 

[C++] STL Priority_Queue Library 기본 명령어 정리

안녕하세요, 여행벌입니다. 오늘은 우선순위큐(Priority Queue)에 대해서 알아보도록 하겠습니다. 1. Priority_Queue(우선순위큐) 란? Priority_Queue는 Queue의 한 종류로 이름 그대로 우선순위에 따라 정렬된

travelbeeee.tistory.com

 

 

https://j3sung.tistory.com/268

 

[C++] 백준 11286번 절댓값 힙

우선순위 큐에서 값을 뽑아낼 때 절대값이 낮은 순대로 뽑는 문제입니다. 절댓값을 기준으로하여 내림차순으로 뽑아야하므로 다음처럼 선언해줍니다. priority_queue , vector  >, greater  > > pq; pair

j3sung.tistory.com

풀어보고 다양한 방법이 있을거 같아서 찾아봤는데 여러가지방법중에서 제일 신기한방법. (머리진짜 좋다)

 

 

728x90