-1을 입력으로 주면, 해당 프로그램을 종료한다.
0을 입력으로 주면, 해당 프로그램 진행중에 나온 최대값을 출력하고, 해당 값을 우선순위 큐에서 삭제한다.
0을 입력으로 주었을때, 우선순위 큐가 비어있다면 -1을 출력한다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
freopen("input.txt", "rt", stdin);
priority_queue<int> pQ;
while(true) {
int temp;
cin >> temp;
if(temp == -1) break;
if(temp == 0) {
if(pQ.empty()) cout << -1;
else {
cout << pQ.top() << "\n";
pQ.pop();
}
}
else pQ.push(temp);
}
return 0;
}
ex) 입력이 다음과 같을때의 출력
1 2 3 4 5 0 0 7 8 9 0 -1
입력과 출력시에 -를 붙여주면, 최소힙을 사용하여 최소값을 출력하는 것과 같은 결과를 얻을 수 있다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
freopen("input.txt", "rt", stdin);
priority_queue<int> pQ;
while(true) {
int temp;
cin >> temp;
if(temp == -1) break;
if(temp == 0) {
if(pQ.empty()) cout << -1;
else {
cout << -pQ.top() << "\n"; // -
pQ.pop();
}
}
else pQ.push(-temp); // -
}
return 0;
}
ex) 입력이 다음과 같을때의 출력
1 2 3 4 5 0 0 7 8 9 0 -1