문제출처 : https://www.acmicpc.net/problem/19598
code
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main()
{
int N, i, x, y, last = 0, meeting_room = 0;
vector<pair<int, int>> arr;
priority_queue<int>pq;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> x >> y;
arr.push_back({ x,y });
if (last <= y)
last = y;
}
sort(arr.begin(), arr.end());
pq.push(-arr[0].second);
for (i = 1; i < N; i++)
{
if (arr[i].first >= -pq.top())
pq.pop();
pq.push(-arr[i].second);
if (meeting_room < pq.size())
meeting_room = pq.size();
}
cout << meeting_room;
return 0;
}
우선순위 큐에 대한 이해를 물어보는 문제였던것 같다.
우선순위 큐에 대한 문제를 작년에 풀어보고 안풀어본것 같아서 블로그에 올린문제를 다시 한번 보면서 복습하면서 했다.
우선순위 큐는 가장 작은 값을 top으로 두는데 푸쉬할때 음수로 넣으면 절대값이 가장 작은 값이 top을 유지하게 될것이다.