7662번: 이중 우선순위 큐

myeongrangcoding·2023년 12월 18일
0

백준

목록 보기
32/47

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

풀이(map)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cout.tie(nullptr);
	cin.tie(nullptr);
	//freopen("input.txt", "rt", stdin);

	int T{}, k{};
	char Calculation{};
	int Integer{};
	cin >> T;

	for (int i = 0; i < T; ++i)
	{
		map<int, int> DualPriorityQueue;

		cin >> k;
		for (int j = 0; j < k; ++j)
		{
			cin >> Calculation >> Integer;

			if ('I' == Calculation)
			{
				++DualPriorityQueue[Integer];
			}
			else if ('D' == Calculation)
			{
				if (-1 == Integer)
				{
					if (DualPriorityQueue.size())
					{
						auto iter = DualPriorityQueue.begin();
						--iter->second;

						if (0 == iter->second)
						{
							DualPriorityQueue.erase(iter);
						}
					}
					
				}
				else if (1 == Integer)
				{
					if (DualPriorityQueue.size())
					{
						auto iter = --DualPriorityQueue.end();
						--iter->second;

						if (0 == iter->second)
						{
							DualPriorityQueue.erase(iter);
						}
					}
				}
			}
		}

		if (DualPriorityQueue.size())
		{
			auto iter = --DualPriorityQueue.end();
			cout << iter->first << ' ';
			
			iter = DualPriorityQueue.begin();
			cout << iter->first;
		}
		else
		{
			cout << "EMPTY";
		}
		cout << '\n';
	}

	return 0;
}
profile
명랑코딩!

0개의 댓글