#HK3912. 「PA 2022」Fotografia

「PA 2022」Fotografia

题目描述

题目译自 PA 2022 Runda 3 Fotografia

字节科技学校(Bajtockiej Szkoły Technicznej, BST)的毕业生们聚集在学校前面的广场上拍摄纪念照。他们排成一排,其位置从左到右编号为 11nn,其中 nn 是今年毕业生的人数。

摄影师决定重新安排这些人的位置,让他们按身高升序排列。最矮的人在最左边,最高的人在最右边。幸运的是,今年的毕业生中没有任意两人身高相同。

为了避免混乱,安排位置将按一定方式进行。在一次操作中,摄影师将喊出一串位置编号。在这些位置上的人将按所喊到的顺序出列并走到广场中间。然后,摄影师将重复同样的数字列表。广场中间的人将他们出列顺序的逆序,依次回到摄影师所喊出的位置。

我们希望用尽可能少的操作将所有毕业生按身高的升序排列。你的工作是规划重新安排的方案,并告诉摄影师在第几次操作让哪些毕业生出列。

输入格式

第一行一个整数 n (1n3 000)n\ (1\le n\le 3\ 000),表示毕业生人数。

接下来 nn 行是一个整数序列 h1,h2,,hn (1hi3 000)h_1,h_2,\ldots,h_n\ (1\le h_i\le 3\ 000),每行一个整数,表示站成一排的人的身高。所有身高两两不同。

输出格式

输出第一行包含一个整数 rr,表示把所有人按身高升序排列所用的最少操作次数。

接下来 2r2r 行包含对这些操作的描述。描述第一行包含一个整数 pi (1pin)p_i\ (1\le p_i\le n),表示这一轮出列的人数,第二行 pip_i 个整数,表示按输出顺序喊出人的位置编号。在一次操作中喊出的人不能重复。

如果有多种操作次数最少的方案,输出任意一种即可。

5
1670
2011
1560
1232
1447

1
5
2 1 3 4 5

这组样例仅需要一轮。首先毕业生按 [2011,1670,1560,1232,1447][2011, 1670, 1560, 1232, 1447] 的顺序全部出列。然后按逆序回到 2,1,3,4,52,1,3,4,5 位置。最终的顺序就是 [1232,1447,1560,1670,2011][1232, 1447, 1560, 1670, 2011],这是按升序排列的。

6
1556
1449
1863
2014
1333
1220

2
5
5 6 1 4 3
4
1 2 3 4

这组样例需要两轮,并且可以证明轮数不可能更少。第一轮后序列变为 [1556,1449,1333,1220,1863,2014][1556, 1449, 1333, 1220, 1863, 2014],第二轮后序列变为 [1220,1333,1449,1556,1863,2014][1220, 1333, 1449, 1556, 1863, 2014]