CF384B Multitasking
题目描述
Iahub 想要提升自己的多任务处理能力。为此,他希望能够同时对 $n$ 个数组进行排序,每个数组包含 $m$ 个整数。
Iahub 可以选择一对不同的下标 $i$ 和 $j$($1 \leq i, j \leq m, i \neq j$)。然后,对于每一个数组,如果位置 $i$ 的值严格大于位置 $j$ 的值,就交换这两个位置的值。
Iahub 想要找到一组按顺序选择的下标对,使得所有这 $n$ 个数组都能够被排序成升序或降序(具体顺序由输入给定)。这一组下标对的大小最多为 $m \times (m-1)$(即最多 $m \times (m-1)$ 对)。请你帮助 Iahub,找到任意一组满足要求的下标对。
输入格式
第一行包含三个整数 $n$($1 \leq n \leq 1000$)、$m$($1 \leq m \leq 100$)和 $k$。如果 $k = 0$,表示数组需升序排序;如果 $k = 1$,表示数组需降序排序。接下来的 $n$ 行中,每行包含 $m$ 个用空格分隔的整数,表示第 $i$ 个数组。对于每个数组中的元素 $x$,有 $1 \leq x \leq 10^6$。
输出格式
输出的第一行为一个整数 $p$,表示下标对的数量($p$ 至多为 $m \times (m-1)$)。接下来的 $p$ 行中,每行包含两个不同的整数 $i$ 和 $j$($1 \leq i, j \leq m, i \neq j$),表示所选择的下标对。
如果存在多种方案,你可以输出任意一种。
说明/提示
考虑第一个样例。第一次操作后,数组变为 $[1,3,2,5,4]$ 和 $[1,2,3,4,5]$。第二次操作后,数组变为 $[1,2,3,5,4]$ 和 $[1,2,3,4,5]$。第三次操作后,数组变为 $[1,2,3,4,5]$ 和 $[1,2,3,4,5]$。
由 ChatGPT 5 翻译