QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 256 MB 總分: 100 可 Hack ✓

#18193. 给 Benq 的任务

统计

在比赛前一周,CULC 的组织者们得知某位高水平选手将参加比赛。 震惊之余,他们迅速打开了 TaskGPT,用颤抖的手指输入:

ikaurov 你能尽快为 benq 出一道题吗?不要出任何差错
TaskGPT 极好的问题!以下这道题会非常合适。
给你一个由 $n$ 个非负整数组成的列表 $a$,其中 $n \le 1000$。
你可以对这个列表执行零次或多次以下操作。
选择两个不同的位置 $1 \le x, y \le n$ 并赋值:
$a_x := a_x \oplus a_y$。其中 $\oplus$ 表示两个数的按位异或。
你需要执行这些操作,使得最终的列表按非降序排列——即对于 $1$ 到 $n - 1$ 的每个位置 $i$,都有 $a_i \le a_{i+1}$。
最终的数字集合不需要与初始集合相同。
你必须使用最多 $2500$ 次操作对列表进行排序。你想知道解法吗?

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 1000$),表示列表的大小。

第二行包含 $n$ 个整数 $a_1, \dots, a_n$ ($0 \le a_i \le 2^{20} - 1$),表示待排序的列表。

输出格式

第一行,输出操作次数 $m$ ($0 \le m \le 2500$)。

接下来的 $m$ 行,每行输出两个整数 $x$ 和 $y$ ($1 \le x, y \le n, x \neq y$),表示每次操作选择的位置。

在 $m$ 次操作后,列表必须按非降序排列。

可以证明,总是可以在最多 $2500$ 次操作内对列表进行排序。

样例

输入样例 1

5
0 1 1 1 2

输出样例 1

0

输入样例 2

5
4 3 2 1 0

输出样例 2

5
5 1
1 5
2 3
2 4
4 3

说明

在第一个样例中,列表已经是有序的,因此不需要进行任何操作。

在第二个样例中,列表的变化过程如下:$[4, 3, 2, 1, 0] \to [4, 3, 2, 1, 4] \to [0, 3, 2, 1, 4] \to [0, 1, 2, 1, 4] \to [0, 0, 2, 1, 4] \to [0, 0, 2, 3, 4]$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.