2가지 우선순위 큐(양수, 음수)를 사용하거나 2가지 정렬 기준을 사용하면 된다.
#include <iostream>
#include <queue>
using namespace std;
typedef pair<int, int> pii;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
priority_queue<pii, vector<pii>, greater<pii>> pq;
int N, x;
cin >> N;
while (N--)
{
cin >> x;
if (x)
{
pq.push({abs(x), x});
}
else
{
if (pq.empty())
cout << 0;
else
cout << pq.top().second, pq.pop();
cout << "\n";
}
}
return 0;
}
2가지 우선순위 큐를 사용하는 것보단 pair를 활용한 2가지 정렬 기준이 더 깔끔하게 나온다.