문제링크 : https://www.acmicpc.net/problem/14235
#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으로 큐에서 지워주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 6588번] 골드바흐의 추측 (C++) (0) | 2023.02.25 |
---|---|
[백준 6591번] 어항 쇼다운 (C++) (0) | 2023.02.25 |
[백준 9324번] 진짜 메시지 (C++) (0) | 2023.02.23 |
[백준 14731번] 謎紛芥索紀 (Large) (C++) (0) | 2023.02.22 |
[백준 1740번] 거듭제곱 (C++) (0) | 2023.02.21 |