priority_queue<pair<int, int>>와 같은 자료구조의 우선순위 큐를 이용하여 풀 수 있는 문제이다. pair의 첫 번째 인자는 입력의 절대값을 두 번째 인자는 음수인지 양수인지 판단할 수 있는 값을 넣어주고 큐의 정렬을 오름차순으로 하면된다.
#include <iostream>
#include <queue>
#include <vector>
#include <functional>
using namespace std;
int main()
{
int N, num;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
vector<int> result;
cin >> N;
for(int i = 0; i < N; i++){
cin >> num;
if(num == 0){
if(pq.size() == 0){
result.push_back(0);
}
else{
result.push_back(pq.top().first * pq.top().second);
pq.pop();
}
}
else if(num < 0){
pq.push(pair<int, int>(num*-1, -1));
}
else {
pq.push(pair<int, int>(num, 1));
}
}
for(auto v : result){
cout << v << endl;
}
return 0;
}