문제 설명

문제 링크

http://icpc.me/7662

 

7662번: 이중 우선순위 큐

입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적

www.acmicpc.net

풀이

multiset을 이용하여 풀 수 있다. 

multiset은 정렬이 되어있는 균형 이진트리 형태로 구현돼있기 때문에 가장 큰 값과 가장 작은 값을 쉽게 구할 수 있다.

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
    int t; scanf("%d", &t);
    while (t--) {
        multiset<int> ms;
        int n; scanf("%d", &n);
        while (n--) { 
            char cmd; int num; scanf(" %c %d", &cmd, &num);
            if (cmd == 'I') {
                ms.insert(num);
            } else {
                if (ms.empty()) continue;
                if (num == -1) {
                    int k = *ms.begin();
                    ms.erase(ms.lower_bound(k));
                } else {
                    int k = *ms.rbegin();
                    ms.erase(ms.lower_bound(k));
                }
            }
        }
        if (ms.empty()) printf("EMPTY\n");
        else printf("%d %d\n", *ms.rbegin(), *ms.begin());
    }    
}

'Algorithm > BOJ' 카테고리의 다른 글

백준[13549] 숨바꼭질 3  (0) 2022.01.18
백준[1865] 웜홀  (0) 2022.01.18
백준[1238] 파티  (0) 2022.01.11
백준[1562] 계단 수  (0) 2022.01.09
백준[1208] 부분수열의 합 2  (0) 2022.01.09
복사했습니다!