0이 아닌 값은 우선순위 큐에 집어넣어 주고
0인 값일 경우 비어있다면 0 아니라면 우선순위 큐의 값을 출력하면 된다.
#include <iostream>
#include <queue>
using namespace std;
int N, i;
priority_queue<int> pq;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> N;
while (N--)
{
cin >> i;
if (i)
pq.push(i);
else if (pq.empty())
cout << 0 << "\n";
else
cout << pq.top() << "\n", pq.pop();
}
return 0;
}
우선순위 큐를 사용하면 된다.