P16380 [NordicOI 2026] Catching Apples 接苹果
题目背景
翻译来源:loj [#5711. 「NordicOI 2026」Catching Apples](https://loj.ac/p/5711)。
3s,1024MB。
Subtask 0 为样例。
题目描述
苹果园可以看作是一条一维直线。共有 $N$ 个苹果,第 $i$ 个苹果在时间 $t_i$ 掉落在位置 $x_i$。
机器人的最大移动速度为 $1$。为了接住第 $i$ 个苹果,机器人必须在时间 $t_i$ 恰好位于位置 $x_i$。每个机器人可以从任意位置出发,在接住最后一个苹果后,它可以停在任意位置。
你的任务是使用尽可能少的机器人接住所有苹果。你还需要输出每个苹果由哪一个机器人接住。
输入格式
第一行包含一个整数 $N$ $(1 \leq N \leq 2 \cdot 10^5)$,表示苹果的数量。
接下来 $N$ 行,每行包含两个整数 $t_i$ 和 $x_i$ $(1 \leq t_i, x_i \leq 10^9)$,分别表示第 $i$ 个苹果掉落的时间和位置。
所有 $(t_i, x_i)$ 坐标对都是不同的。
输出格式
输出一个整数 $K$,表示接住所有苹果所需的最少机器人数量。
接下来一行输出 $N$ 个整数 $a_1, a_2, \dots, a_N$,其中 $a_i$ 表示接住第 $i$ 个苹果的机器人编号。
机器人编号必须在 $1$ 到 $K$ 之间,且 $1$ 到 $K$ 的每个编号都必须至少使用一次。
如果存在多种最优分配方案,你可以输出其中任意一种。
仅对于第 $4$ 组数据,允许只输出整数 $K$。
说明/提示
### 评分
详细子任务附加限制及分值如下表所示:
| 子任务 | 分值 | 附加限制 |
| :-: | :-: | :-: |
| $1$ | $15$ | $N \leq 20$ |
| $2$ | $13$ | 最少机器人数量不超过 $2$ |
| $3$ | $20$ | $N \leq 5000$ |
| $4$ | $27$ | 仅需输出机器人数量 $K$,无需提供分配方案 |
| $5$ | $25$ | 无附加限制 |
### 样例解释
在第一个样例中,一个机器人可以按顺序接住每个苹果。
在第二个样例中,苹果 $1$ 和苹果 $3$ 可以由同一个机器人接住,但苹果 $2$ 必须由另一个机器人接住。
在第三个样例中,所需的最少机器人数量为 $2$,但存在多种不同的最优分配方案。