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

import java.io.*;
import java.util.*;
class Room {
private int start;
private int end;
public Room(int start, int end) {
this.start = start;
this.end = end;
}
public int getStart() {
return start;
}
public int getEnd() {
return end;
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
List<Room> rooms = new ArrayList<>();
PriorityQueue<Integer> pq = new PriorityQueue<>();
int answer = 0;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
rooms.add(new Room(start, end));
}
rooms.sort(Comparator.comparingInt(Room::getStart)
.thenComparingInt(Room::getEnd));
for (Room room : rooms) {
while (!pq.isEmpty() && pq.peek() <= room.getStart()) {
pq.poll();
}
pq.offer(room.getEnd());
answer = Math.max(answer, pq.size());
}
bw.write(String.valueOf(answer));
bw.flush();
bw.close();
}
}