https://www.acmicpc.net/problem/7662
이 문제는 c++의 set헤더를 이용하면 쉽게 풀 수 있는 문제였습니다.
multiset 헤더는 set헤더와는 다르게 중복된 값을 저장할 수 있기에, 이중 우선순위 큐를 풀기 위해서는 multiset을 이용해야 합니다.
왜냐하면 문제에서 D -1 연산을 했을때 최소값이 중복되더라도 한 번만 제거하기 때문입니다.
erase() 함수를 통해 원소를 삭제할 수 있다. (erase함수 안에 인자로 값 자체를 넣으면 해당 값을 가진 모든 원소가 삭제 된다. 하지만 주소 값을 넣으면 그 주소에 해당 된 원소만 삭제된다.)
더불어 end()함수는 가장 끝 값의 다음 주소을 접근하기 때문에, 가장 끝 주소값을 접근하기 위해 해당 주소값을 다음과 같이 지워줘야 합니다.
auto iter_end = ms.end();
iter_end--;
'PS > 자료 구조[Data Structure]' 카테고리의 다른 글
백준 1655 가운데를 말해요(c++) (0) | 2023.01.25 |
---|---|
백준 2606 바이러스(c++) (0) | 2023.01.25 |
백준 3015 오아시스 재결합(c++) (0) | 2023.01.25 |