/* 문제 : [1931] 회의실배정
[input]
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14
[output]
4
[설명]
첫째 줄에 회의의 수 N이 주어진다.
둘째 줄부터 회의 시작시간, 회의 끝나는 시간이 주어진다.
이 때, 최대 사용할 수 있는 회의 수를 출력해라.
*/
#include <iostream>
#include <queue>
using namespace std;
struct room {
int start;
int end;
room(int start, int end) :start(start), end(end) {};
};
bool operator < (room r1, room r2) {
if (r1.end != r2.end)
return r1.end > r2.end;
else
return r1.start > r2.start;
}
int main()
{
priority_queue<room> pQue;
int n; // 회의 수
int compareNum = -1; // 비교하는 변수
int count = 0;
cin >> n;
// 회의실 시작, 종료시간 입력
for (int i = 0, s, k; i < n; i++) {
cin >> s >> k;
pQue.push(room(s, k));
}
while (!pQue.empty()) {
room r = pQue.top();
pQue.pop();
if (compareNum <= r.start) {
compareNum = r.end;
count++;
}
}
cout << count;
return 0;
}