QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 128 MB Total points: 100

#14644. Rozbicie dzielnicowe

统计

Baitek Bajtocki 是一位才华横溢的年轻程序员。他的父母知道他能力出众,经常在电脑相关的问题上向他求助。

这一次,Bajtocki 先生和夫人决定在 Bajtocki Bit Bank(BBB)开设一个带有网银功能的账户。为此,他们两人都必须为账户设置密码。Baitek 的母亲在银行听说,最安全的密码是由计算机生成的。由于不知道如何做到这一点,父母便请 Baitek 帮忙。

BBB 的网站要求每个密码至少包含五个字符。允许使用的字符包括大小写字母、数字以及一些标点符号——更准确地说,是所有 ASCII 码在 48 到 122 之间的字符。为了让父母登录时不至于太麻烦,Baitek 决定为他们两人都生成恰好五个字符的密码。

Baitek 很容易地启动了一个伪随机数生成器,并生成了若干可能的密码。现在他正在考虑把哪个密码分配给母亲、哪个分配给父亲。他检查后发现,出于安全原因,银行服务要求不同账户持有人的密码必须不同。Baitek 决定进一步给父母留下深刻印象,给他们提供一对非常不同的密码,即在每一个位置上的字符都不同的密码。

为了让密码更容易记住,Baitek 希望母亲的密码像 Bajtocki 家某只猫的名字,而父亲的密码像他们家狗的名字。最终选择由 Baitek 自己决定,但在那之前,他希望得到他所生成的密码列表中所有非常不同的密码对。请编写程序生成这样的列表。

输入格式

输入第一行包含一个整数 $n$($2 \le n \le 50{,}000$),表示 Baitek 生成的密码数量。接下来 $n$ 行每行包含 5 个字符,这些字符的 ASCII 码都在 48 到 122 之间。你不应假设给定的密码具有任何随机性。

输出格式

输出第一行应包含一个非负整数 $m$,表示无序的、非常不同的密码对数量。接下来 $m$ 行每行输出两个整数:一对非常不同的密码的下标。密码按输入顺序从 1 到 $n$ 编号。

如果输入密码中非常不同的密码对超过 100,000 对,则输出任意 100,000 对(并令 $m$ 输出为 100,000)。

样例数据

对于输入:

3
aB;Va
xBx@a
zc:ng

一种正确输出为:

2
1 3
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.