QOJ.ac

QOJ

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

#6545. 连接点

统计

考虑 $Ox$ 轴上有 $N$ 个不同的点,从左到右编号为 $1, 2, \dots, N$。每个点都有一个颜色:点 $i$ 的颜色为 $A_i$。

你想要画出若干条曲线,每条曲线连接两个点。然而,需要满足以下限制:

  • 不能连接两个颜色相同的点。
  • 每条连接点的曲线必须位于 $x$ 轴上方。换句话说,每条曲线的每个内部点都满足 $y > 0$。(端点满足 $y = 0$。)
  • 两条不同的曲线不能有公共的内部点。(可以共享端点。)

例如,如果有 4 个点如下图所示,点 1 和 2 是红色的,点 3 和 4 是蓝色的,你可以画出总共 3 条曲线:连接点 1 和 4,点 2 和 3,以及点 2 和 4。

画 4 条曲线会违反上述至少一个限制,因此在这种情况下,最大数量为 3。

给定每个点的颜色,找出一种画出尽可能多连接两个点的曲线的方法,且不违反任何限制,并输出每条曲线连接的两个点。

输入格式

第一行包含一个整数 $T$,表示测试用例的数量($1 \le T \le 101$)。接下来是各个测试用例。 每个测试用例的第一行包含点数 $N$ 和颜色数 $M$($2 \le N \le 200\,000$,$2 \le M \le N$)。 下一行包含 $N$ 个整数 $A_1, A_2, \dots, A_N$($1 \le A_i \le M$)。 所有测试用例的 $N$ 之和不超过 $200\,000$。

输出格式

对于每个测试用例,首先输出一行,包含一个整数 $K$:连接两个点的最大曲线数量。 在接下来的 $K$ 行中,每行输出由一条曲线连接的两个点的编号。曲线必须满足上述所有限制。如果存在多种可能的答案,输出其中任意一种即可。

样例

输入 1

3
4 2
1 1 2 2
4 2
1 2 1 2
3 3
1 2 3

输出 1

3
2 3
2 4
4 1
4
1 2
2 3
3 4
4 1
3
3 1
1 2
2 3

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.