백준 7662, '이중 우선순위 큐'
https://www.acmicpc.net/problem/7662
시도 : 우선순위 큐 -> 덱 -> 우선순위 큐 두개
=> 시간 초과
알아보니, set
이라는 STL이 있었고 그 중 multiset
을 사용하여 풀 수 있다는 것을 알게됨
set
은 중복을 없애고, 입력할 때 정렬이 되어서 입력되는 것이 특징
multiset
은 중복을 허용하고 나머지는 정렬과 같다.
정렬 기준 default는 오름차순이고, 기준을 바꾸고자 할 때는 priority queue의 방법과 마찬가지로 할 수 있다.
#include <set>
#선언
set <int> s1 # 중복 없애고 정렬(default : 오름차순)
multiset<int> s2 # 중복 허용 정렬(default : 오름차순)
set<int, greater<int>> s3 // 내림차순 정렬
ex. 최대값 제거
auto iter = s.end();
iter--;
s.erase(iter);
ex. 최대값 출력
auto iter = s.end();
iter--;
cout << *iter;