오늘의 알고리즘
[C++] 백준 11286 절댓값 힙
하늘하늘 .
2022. 9. 20. 19:07
#include <iostream>
#include <vector>
#include <queue>
struct cmp
{
bool operator()(int iX, int iY)
{
if (abs(iX) == abs(iY))
{
return iX > iY;
}
return abs(iX) > abs(iY);
}
};
int main()
{
int N = 0;
std::cin >> N;
std::priority_queue<int, std::vector<int>, cmp> pri_que = {};
for (int i = 0; i < N; ++i)
{
int iNumber = 0;
std::cin >> iNumber;
if (iNumber)
{
pri_que.push(iNumber);
}
else
{
if (pri_que.empty())
{
std::cout << "0\n";
}
else
{
std::cout << pri_que.top() << "\n";
pri_que.pop();
}
}
}
return 0;
}
무조건 맨 위의 값만을 확인하기 때문에 우선순위큐를 사용했습니다.
절대값만을 확인하면 되기에 cmp라는 operator를 만들어서 절대값이 같다면 적은 게 더 높은 곳으로 오게 만들었습니다.