항상 최대값이 뭔지 알고 있어야 하니까, priority_queue를 이용했다. 
우선순위 큐의 top()은 항상 최대 값을 알고 있다. 
pop() 하면 항상 최대값이 제거된다. 
 
#include <bits/stdc++.h>
using namespace std;

int n;
long long input;
priority_queue<long long> pq;

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);

  cin >> n;

  while(n--){
    cin >> input;
    if(pq.empty() && input == 0){
      cout << 0 << '\n';
    }else if(input == 0){ // 출력 및 제거
      cout << pq.top() << '\n';
      pq.pop();
    }else{
      pq.push(input);
    }
  }

  return 0;
}
 
728x90

+ Recent posts