#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를 만들어서 절대값이 같다면 적은 게 더 높은 곳으로 오게 만들었습니다.
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 11659 구간 합 구하기 4 (0) | 2022.09.22 |
---|---|
[C++] 백준 11403 경로 찾기 (0) | 2022.09.21 |
[C++] 백준 11047 동전 0 (0) | 2022.09.19 |
[C++] 백준 10026 적록색약 (0) | 2022.09.18 |
[C++] 백준 9375 패션왕 신해빈 (0) | 2022.09.17 |