#백준 11286 – 절댓값


11286 – 문제, 입력, 출력

이것은 우선순위 큐와 연산자 오버로드를 사용할 때의 문제입니다.

#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;
}