본문 바로가기
전공공부/코딩테스트

(c++) 백준 "7662_우선순위_큐"

by 시아나 2022. 8. 8.

https://www.acmicpc.net/problem/7662

 

7662번: 이중 우선순위 큐

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

www.acmicpc.net


#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <limits.h>

using namespace std;
int main() {
	int T; cin >> T;
	for (int t = 0; t < T; t++) {
		int N; cin >> N;
		map<int, int> m;
		for (int i = 0; i < N; i++) {
			char c; cin >> c;
			int num; cin >> num;
			if (c == 'I') {
				m[num]++;
			}
			else if (c == 'D' && m.size() > 0) {
				if (num < 0) {
					m.begin()->second -= 1;
					if (m.begin()->second == 0) {
						m.erase(m.begin()->first);
					}
				}
				else{
					(--m.end())->second -= 1;
					if ((--m.end())->second == 0) {
						m.erase((--m.end())->first);
					}
				}
			}
		}
		int maxest = INT_MIN;
		int minest = INT_MAX;
		if (m.size() > 0) {
			minest = m.begin()->first;
			maxest = (--m.end())->first;
			cout << maxest << " " << minest << endl;
		}
		else {
			cout << "EMPTY" << endl;
		}
	}
	return 0;
}