본문 바로가기

백준/실버

[백준 14235번] 크리스마스 선물 (C++)

문제링크 : https://www.acmicpc.net/problem/14235

 

14235번: 크리스마스 선물

크리스마스에는 산타가 착한 아이들에게 선물을 나눠준다. 올해도 산타는 선물을 나눠주기 위해 많은 노력을 하고 있는데, 전세계를 돌아댕기며 착한 아이들에게 선물을 나눠줄 것이다. 하지만

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
   
    int N, A, present;
    priority_queue<int>pq;
    cin >> N;

    while(N--)
    {
        cin >> A;
        if(A==0)
        {
            if(pq.empty())
            {
                cout << -1 <<"\n";
            }
            else
            {
                cout<<pq.top()<<"\n";  //제일 큰 값 출력
                pq.pop();
            }
        }
        else
        {
            while(A--)  //A가 0이 아닐 때
            {
                cin >> present;
                pq.push(present);
            }
        }
    }
    return 0;
}

우선순위 큐를 이용하여 가장 큰 값이 맨 앞 (top)에 오게된다.

A가 0일때 이를 출력하므로 top을 출력한후 pop으로 큐에서 지워주면 된다.