문제

문제 링크

어떻게 접근할 것인가?

  • 힙의 비교 방법을 짜주면 끝!

heap 활용 코드

#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

struct cmp{
    bool operator()(int a, int b){
        if(abs(a) == abs(b)) return a > b;
        return abs(a) > abs(b);
    }
};

int main(){
    int n, x;
    priority_queue<int, vector<int>, cmp> pq;
    scanf("%d", &n);
    while(n--){
        scanf("%d", &x);
        if(x == 0){
            if(pq.empty()) printf("0\n");
            else printf("%d\n", pq.top()), pq.pop();
        }
        else pq.push(x);
    }
}