https://www.acmicpc.net/problem/11286
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <vector>
#include <functional>
using namespace std;
struct Compare
{
bool operator()(const pair<int, int>& a, const pair<int, int>& b)
{
if (abs(a.first) == abs(b.first))return a.first > b.first;
return abs(a.first) > abs(b.first);
}
};
int main()
{
int N,num;
cin >> N;
priority_queue<pair<int, int>, vector<pair<int, int>>, Compare> heap;
vector<int> result;
while (N--)
{
cin >> num;
if (num == 0)
{
if (heap.empty())
{
result.push_back(0);
}
else
{
result.push_back(heap.top().first);
heap.pop();
}
}
else
{
heap.push({ num,abs(num) });
}
}
for (auto v : result)
cout << v << endl;
return 0;
}
'백준' 카테고리의 다른 글
1377번: 버블 소트 (0) | 2024.05.16 |
---|---|
2750번: 수 정렬하기 (0) | 2024.05.06 |
2164번: 카드2 (0) | 2024.05.05 |
17298번 : 오큰수 구하기 (0) | 2024.05.04 |
1874번: 스택 수열 (0) | 2024.05.02 |