(1~6회차 시도 실패)
import java.io.*;
import java.util.*;
/**
 * 풀이 과정:
 * - 고민과 풀이:
 *
 * - 문제 해결:
 *
 * 시간복잡도: O()
 * 공간복잡도: O()
 *
 */
class Pair{
    int start = 0;
    int end = 0;
    int computer;
    public Pair(int start, int end, int computer) {
        this.start = start;
        this.end = end;
        this.computer = computer;
    }
}
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));
        int n = Integer.parseInt(br.readLine());
        Pair[] pairs = new Pair[n];
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            pairs[i] =  new Pair(start, end, Integer.MAX_VALUE);
        }
        Arrays.sort(pairs, (o1, o2) -> {
            return o1.start - o2.start;
        });
        PriorityQueue<Pair> pq = new PriorityQueue<>((o1, o2)->{
            return o1.end - o2.end;
        });
        int ans = 0;
        PriorityQueue<Integer> smallComputer = new PriorityQueue<>();
        for (int i = 0; i < n; i++) {
            if(!pq.isEmpty() && pq.peek().end <= pairs[i].start){
                while(!pq.isEmpty() && pq.peek().end <= pairs[i].start){
                    smallComputer.add(pq.poll().computer);
                }
                pairs[i].computer = smallComputer.poll();
                pq.add(pairs[i]);
                continue;
            }
            pairs[i].computer = ans;
            ans++;
            pq.add(pairs[i]);
        }
        int[] computers = new int[n];
        for (int i = 0; i < n; i++) {
            computers[pairs[i].computer]++;
        }
        bw.write(ans+"\n");
        for (int i = 0; i < ans; i++) {
            bw.write(computers[i] +" ");
        }
        br.close();
        bw.close();
    }
}
1~6회 시도까지 비슷해서 6회차 시도 코드만 가져옴
(7회차 시도 성공!)
import java.io.*;
import java.util.*;
/**
 * 풀이 과정:
 * - 고민과 풀이:
 *
 * - 문제 해결:
 *
 * 시간복잡도: O()
 * 공간복잡도: O()
 *
 */
class Person{
    int start;
    int end;
    public Person(int start, int end) {
        this.start = start;
        this.end = end;
    }
}
class Room{
    int end;
    int number;
    public Room(int end, int number) {
        this.end = end;
        this.number = number;
    }
}
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));
        int n = Integer.parseInt(br.readLine());
        PriorityQueue<Person> pairs = new PriorityQueue<>((o1, o2)->{
            if(o1.start == o2.start){
                return o1.end - o2.end;
            }
            return o1.start - o2.start;
        });
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int start = Integer.parseInt(st.nextToken());
            int end = Integer.parseInt(st.nextToken());
            pairs.add(new Person(start, end));
        }
        PriorityQueue<Integer> number = new PriorityQueue<>();
        PriorityQueue<Room> room = new PriorityQueue<>((o1,o2) -> {
            if(o1.end == o2.end){
                return o1.number - o2.number;
            }
            return o1.end - o2.end;
        });
        for (int i = 1; i < 100001; i++) {
            number.add(i);
        }
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            while(!room.isEmpty() && room.peek().end < pairs.peek().start){
                number.add(room.poll().number);
            }
            Person person = pairs.poll();
            int num = number.poll();
            map.put(num, map.getOrDefault(num, 0) + 1);
            room.add(new Room(person.end, num));
        }
        bw.write(map.size()+"\n");
        for (Integer value : map.values()) {
            bw.write(value +" ");
        }
        
        br.close();
        bw.close();
    }
}