https://www.acmicpc.net/problem/7662
솔직히 골드4 인게 이해가 안된다.
왜냐하면 그냥 multiset 쓰면 문제가 실버 3으로 보이기 때문이다.
multiset은 set의 중복이 없는 것이다.
그럼 거의 priority_queue와 비슷해지기 때문이다.
이 문제의 시간 제한은 무려 6초 multiset을 써도 충분히 괜찮다.
#include <set>
#include <iostream>
using namespace std;
int main()
{
int Test_case;
cin >> Test_case;
for (int i = 1; i <= Test_case; i++) {
int n;
multiset<int> s;
cin >> n;
for (int j = 1; j <= n; j++) {
int value;
char order;
cin >> order >> value;
if (order == 'I') {
s.insert(value);
} else if (order == 'D') {
if (!s.empty()) {
multiset<int>::iterator starting = s.begin();
multiset<int>::iterator ending = s.end();
ending--;
if (value == -1) s.erase(starting);
else s.erase(ending);
}
}
}
if (s.empty()) cout << "EMPTY\n";
else {
multiset<int>::iterator starting = s.begin();
multiset<int>::iterator ending = s.end();
ending--;
cout << *(ending) << " " << *(starting) << "\n";
}
}
}