OIer 选手要学会扣好算法人生的第一粒扣子。那这枚扣子为什么不能是排序呢?
题目背景
想当年 yummy 被喵了个喵创退役了,于是他认为构造要从 J 组抓起。但是同时不能太创,因此你的任务是老掉牙的排序。
题目描述
你有 n 个队列,队列里所有数都是正整数。
你要用不超过 8×105 次操作将每个队列的元素分别从小到大排序(队头小队尾大)。每次操作给出 x,y,将队列 x 的队头加到队列 y 队尾。
输入格式
输入第一行有一个正整数 n。
之后有 n 行,其中第 i 行先输入自然数 li 表示队列 i 长度,再输入 li 个正整数表示这个队列(左边是队头)。
输出格式
若干行,每行两个正整数 x,y 表示一次操作。
所有操作结束后,输出一行 0 0
。
如有多种操作方案,只需输出任意一种。
样例 #1
样例输入 #1
3
2 2 1
3 1 10 100
3 99 9 9
样例输出 #1
1 3
1 2
2 1
2 2
2 2
3 3
3 3
3 3
3 1
3 3
0 0
提示
【样例解释】
第 1 次操作后,队列 1 变成 [1],队列 3 变成 [99,9,9,2]。
10 次操作全部结束后,队列 1 变成 [1,2],队列 2 变成 [1,10,100],队列 3 变成 [9,9,99]。
尽管现在队列 1 的 1 来自队列 2,但是看上去结果一样,我们就认为它合法。
【数据范围】
记 L 为所有队列里数字个数总和,M 为队列中最大的数。
请注意,表格里 n 用的是等号,不是小于等于。
测试点编号 |
n= |
L≤ |
M≤ |
li≤ |
特殊性质 |
1 |
100 |
198 |
100 |
2 |
l1=0 |
2∼4 |
9900 |
108 |
100 |
5∼7 |
104 |
|
8∼9 |
4×104 |
4×105 |
2×104 |
前2×104 个队列为空 |
10∼12 |
4×104 |
|
13∼15 |
2×105 |
108 |
104 |
16∼18 |
4×105 |
4×104 |
所有队列不存在相等数字 |
19∼20 |
4×104 |
|
21∼22 |
103 |
2×105 |
数据随机 |
23∼25 |
4×105 |
- “数据随机”指队列内数字随机,即随机生成一整个序列再以不随机的 li 切割成 n 段。
- 请注意,21∼25 的数据范围并不是全部数据的范围。
对于全部数据,保证 3≤n≤4×104,1≤L≤4×105,1≤M≤108,0≤li≤4×104。