Algorithm/백준과 프로그래머스

[C++] 11286. 절댓값 힙

young_3060 2023. 8. 5. 13:46
728x90

priority queue pair<int, int>로 구현했다.

pair로 구성한 우선순위 큐는 첫번째 원소를 기준으로 정렬하기 때문에,

pair의 첫번째 값에는 절댓값을 넣어주고 두번째 값에 원래 값을 넣어줬다.

또한, 내림차순이 기본이기 때문에 오름차순으로 바꿔주었다.

 

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

int main(void)
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N;
    priority_queue< pair<int,int>, vector<pair<int,int> >, greater<pair<int,int> > > pq;

    cin >> N;

    while(N--) {
        int x; cin >> x;
        if(x==0) {
            if (pq.empty()) cout << 0 << '\n';
            else
            {
                cout << pq.top().second << '\n';
                pq.pop();
            }
        }
        else {
            pq.push(make_pair(abs(x),x));
        }
    }


    return 0;
}

 

728x90

'Algorithm > 백준과 프로그래머스' 카테고리의 다른 글

[C++] 11508. 2+1세일  (0) 2023.11.16
[C++] 숫자짝궁  (0) 2023.11.14
[C++] 1935. 후위 표기식2  (1) 2023.07.16
[C++] 2164. 카드2  (0) 2023.07.16
[C++] 1158. 요세푸스  (0) 2023.07.15