이것은 우선순위 큐와 연산자 오버로드를 사용할 때의 문제입니다.
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
struct cmp {
bool operator()(int a, int b) {
if (abs(a) > abs(b)) {
return true;
}
else if (abs(a) == abs(b)) {
if (a > b) return true;
else return false;
}
else return false;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int temp;
priority_queue<int, vector<int>,cmp> pq1;
vector<int> res;
for (int i = 0; i < N; i++) {
cin >> temp;
if (temp == 0) {
if (pq1.empty()) pq1.push(0);
res.push_back(pq1.top());
pq1.pop();
}
else {
pq1.push(temp);
}
}
for (int i = 0; i < res.size(); i++) {
cout << res(i) << "\n";
}
return 0;
}