하나를 풀면 다른 하나도 풀 수 있는 1+1 떨이 행사 같은 문제이다. 왜냐하면 최대힙이라는 것은 애초에 STL:queue에 들어있고, 그걸 -1* 해버리면 최소힙이 되어버린다. 정말 완벽하다.
#include <iostream>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;
int main(){
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
priority_queue<int, vector<int>> ans;
while (N--)
{
int tmp;
cin >> tmp;
if (tmp == 0) {
if (ans.empty())
cout << "0\n";
else {
cout << ans.top() << endl;
ans.pop();
}
}
else ans.push(tmp);
}
return 0;
}
최대힙
#include <iostream>
#include <queue>
#include <algorithm>
#include <functional>
using namespace std;
int main(){
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
priority_queue<int, vector<int>> ans;
while (N--)
{
int tmp;
cin >> tmp;
if (tmp == 0) {
if (ans.empty())
cout << "0\n";
else {
cout << -1*ans.top() << endl;
ans.pop();
}
}
else ans.push(-1*tmp);
}
return 0;
}
최소 힙
'vidigummy KAU > 알고리즘 공부(백준!)' 카테고리의 다른 글
BOJ N과 M 시리즈 (0) | 2021.01.16 |
---|---|
BOJ 11286 절댓값 힙 (0) | 2021.01.14 |
BOJ 1202 보석도둑 (0) | 2021.01.14 |
BOJ 1780 종이의 개수 (0) | 2021.01.10 |