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

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

题目背景

原题链接:https://oier.team/problems/93

题目描述

巡的家有 mm 台打印机,编号从 11mm。她有 nn 个文件想要打印。其中第 ii 个文件会在第 tit_i 时刻下发打印命令,打印这个文件需要 sis_i 的时间。

每次发送一个文件打印会选择等待时间最短的打印机,如有多个,选择编号最小的。

你需要告诉巡每台打印机打印了哪些文件。

保证同一时刻不会下发多个打印命令。

输入格式

第一行,两个正整数 n,mn,m,表示文件的数量和打印机的数量。

接下来 nn 行,每行两个正整数 si,tis_i,t_i,表示第 ii 个文件需要的打印时间以及下发命令的时刻。保证所有 tit_i 互不相同。

输出格式

mm 行,第 iiki+1k_i + 1 个整数:

  • 第一个非负整数 kik_i,表示第 ii 台打印机打印的文件数量;
  • 接下来 kik_i 个正整数,从小到大排序,表示其打印的文件编号。
3 3
2 3
2 1
5 2
2 1 2
1 3
0

提示

【样例解释 #1】

共有 33 台打印机。按时间顺序,打印命令如下:

  • 文件 22 在第 11 秒被下发。此时所有打印机等待时间都是 00。因此选择编号最小的 11 号打印机。
  • 文件 33 在第 22 秒被下发。此时 11 号打印机正在打印文件 22,其余打印机等待时间都是 00。因此选择编号最小的 22 号打印机。
  • 文件 11 在第 33 秒被下发。此时 11 号打印机已经完成文件 22 的打印,等待时间为 00。因此选择 11 号打印机。

故三台打印机分别打印了编号为 [1,2],[3],[][1,2],[3],[] 的文件。

【样例 #2】

见附件中的 print/print2.inprint/print2.ans

该组样例满足测试点 131\sim 3 的约束条件。

【样例 #3】

见附件中的 print/print3.inprint/print3.ans

该组样例满足测试点 494\sim 9 的约束条件。

【样例 #4】

见附件中的 print/print4.inprint/print4.ans

该组样例满足测试点 182018\sim 20 的约束条件。

【数据范围】

对于所有测试数据,保证:1n,m2×1051\leq n,m\leq 2\times 10^51si,ti1091\leq s_i,t_i\leq 10^9,所有 tit_i 互不相同。

测试点编号 n,mn,m\leq sis_i\leq tit_i\leq
131\sim 3 1010 10910^9
494\sim 9 50005000
101310\sim 13 2×1052\times 10^5 11 2×1052\times 10^5
141714\sim 17 10910^9
182018\sim 20 10910^9