커스텀 우선순위 큐를 이용하는 문제
compare
내부0
이면 0
출력pq.top()
을 출력 하고, pq.pop()
을 해준다.#include <iostream>
#include <queue>
using namespace std;
struct compare {
bool operator()(int a, int b) {
if (abs(a) == abs(b)) return a > b;
return abs(a) > abs(b);
}
};
int main()
{
int n;
cin >> n;
priority_queue<int, vector<int>, compare> pq;
for (int i = 0;i < n;i++) {
int tmp;
cin >> tmp;
if (tmp != 0) pq.push(tmp);
else {
if (pq.size() == 0) cout << "0\n";
else {
cout << pq.top() << "\n";
pq.pop();
}
}
}
return 0;
}