P11289 【MX-S6-T1】「KDOI-11」打印

题目背景

原题链接:。

题目描述

巡的家有 $m$ 台打印机,编号从 $1$ 到 $m$。她有 $n$ 个文件想要打印。其中第 $i$ 个文件会在第 $t_i$ 时刻下发打印命令,打印这个文件需要 $s_i$ 的时间。 每次发送一个文件打印会选择等待时间最短的打印机,如有多个,选择编号最小的。 你需要告诉巡每台打印机打印了哪些文件。 **保证同一时刻不会下发多个打印命令。**

输入格式

第一行,两个正整数 $n,m$,表示文件的数量和打印机的数量。 接下来 $n$ 行,每行两个正整数 $s_i,t_i$,表示第 $i$ 个文件需要的打印时间以及下发命令的时刻。保证所有 $t_i$ 互不相同。

输出格式

$m$ 行,第 $i$ 行 $k_i + 1$ 个整数: - 第一个非负整数 $k_i$,表示第 $i$ 台打印机打印的文件数量; - 接下来 $k_i$ 个正整数,从小到大排序,表示其打印的文件编号。

说明/提示

**【样例解释 #1】** 共有 $3$ 台打印机。按时间顺序,打印命令如下: - 文件 $2$ 在第 $1$ 秒被下发。此时所有打印机等待时间都是 $0$。因此选择编号最小的 $1$ 号打印机。 - 文件 $3$ 在第 $2$ 秒被下发。此时 $1$ 号打印机正在打印文件 $2$,其余打印机等待时间都是 $0$。因此选择编号最小的 $2$ 号打印机。 - 文件 $1$ 在第 $3$ 秒被下发。此时 $1$ 号打印机已经完成文件 $2$ 的打印,等待时间为 $0$。因此选择 $1$ 号打印机。 故三台打印机分别打印了编号为 $[1,2],[3],[]$ 的文件。 **【样例 #2】** 见附件中的 `print/print2.in` 与 `print/print2.ans`。 该组样例满足测试点 $1\sim 3$ 的约束条件。 **【样例 #3】** 见附件中的 `print/print3.in` 与 `print/print3.ans`。 该组样例满足测试点 $4\sim 9$ 的约束条件。 **【样例 #4】** 见附件中的 `print/print4.in` 与 `print/print4.ans`。 该组样例满足测试点 $18\sim 20$ 的约束条件。 **【数据范围】** 对于所有测试数据,保证:$1\leq n,m\leq 2\times 10^5$,$1\leq s_i,t_i\leq 10^9$,所有 $t_i$ 互不相同。 | 测试点编号 | $n,m\leq$ | $s_i\leq $ | $t_i\leq $ | | :---------: | :------------: | :--------: | :------------: | | $1\sim 3$ | $10$ | $10^9$ | $10^9$ | | $4\sim 9$ | $5000$ | $10^9$ | $10^9$ | | $10\sim 13$ | $2\times 10^5$ | $1$ | $2\times 10^5$ | | $14\sim 17$ | $2\times 10^5$ | $10^9$ | $2\times 10^5$ | | $18\sim 20$ | $2\times 10^5$ | $10^9$ | $10^9$ |