우선순위 큐 (priority_queue) 를 이용해서 문제를 풀 수 있다.
0이 입력되면 큐에 있는 가장 작은 수가 출력이 된다. 큐가 비어있는 상태라면 0을 출력한다.
0 이외의 수가 입력이 되면 큐에 push를 한다.
https://blockdmask.tistory.com/107
위 링크를 보면 우선순위 큐의 선언 방식을 알 수 있다.
우선순위 큐는 내림차순으로 쌓이는게 default이며
priority_queue<int , vector<int>, greater<int> > pq;
로 선언해주면 오름차순 출력이 가능하다.
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
priority_queue<int, vector<int>, greater<int>> pq;
while (n--)
{
int num;
cin >> num;
if (num != 0)
pq.push(num);
else
{
if (pq.empty())
cout << 0 << '\n';
else
{
cout << pq.top() << '\n';
pq.pop();
}
}
}
}