QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 256 MB Puntuación total: 100

#13187. XEN 3166

Estadísticas

世界上有 $N$ 个国家,编号从 $1$ 到 $N$。每个国家都有一个国家名称和一个国家代码,两者都可以表示为字符串。没有两个国家拥有相同的名称。为简单起见,在本题中,我们假设字符串仅由大写英文字母(A-Z)组成。

ISO (ISO 3166) 发布了一种广为人知的国家代码标准。然而,Xenia 注意到 ISO 3166 有一些奇怪之处。生成的代码不再按字母顺序排列!例如,“INDIA”的国家代码是“IN”,而“INDONESIA”是“ID”。在字母顺序中,“INDONESIA”排在“INDIA”之后,但“IN”却排在“ID”之后。

由于对 ISO 3166 国家代码的这种不一致性感到不满,Xenia 寻求一种更一致的编码方式。她开发了自己的标准,称为 XEN 3166。XEN 3166 的规则如下:

  • 对于每个国家,其国家代码必须是其国家名称的子序列。
  • 对于每个国家,其国家代码的首字母必须与其国家名称的首字母相同。
  • 对于每个国家,其国家代码的长度必须恰好为 $K$。
  • 如果国家名称为 $S$ 的国家拥有国家代码 $S'$,国家名称为 $T$ 的国家拥有国家代码 $T'$,那么当且仅当 $S'$ 在字典序上小于 $T'$ 时,$S$ 在字典序上小于 $T$。

字符串 $T = T_1T_2\cdots T_{|T|}$ 是字符串 $S = S_1S_2\cdots S_{|S|}$ 的子序列,如果存在整数序列 $u_1, u_2, \cdots, u_{|T|}$,满足 $1 \le u_1 < u_2 < \cdots < u_{|T|} \le |S|$ 且对于所有 $1 \le i \le |T|$,都有 $S_{u_i} = T_i$。例如,“ID”、“IN”和“IND”是“INDIA”的子序列,但“IDN”、“INN”、“Z”不是“INDIA”的子序列。

字符串 $S = S_1S_2\cdots S_{|S|}$ 在字典序上小于字符串 $T = T_1T_2\cdots T_{|T|}$,如果满足以下至少一个条件: $|S| < |T|$ 且对于所有 $1 \le i \le |S|$,都有 $S_i = T_i$,或者 存在一个索引 $i$,使得 $S_i < T_i$ 且对于所有 $1 \le j < i$,都有 $S_j = T_j$。

例如,假设只有两个国家,$K = 2$。第一个国家的名称是“INDIA”,第二个国家的名称是“INDONESIA”。因此,几种可能的国家代码分配方案为: “INDIA”对应“ID”,“INDONESIA”对应“IN” “INDIA”对应“IA”,“INDONESIA”对应“ID” * “INDIA”对应“II”,“INDONESIA”对应“IO”

给定 $N$、$K$ 以及国家名称列表,请帮助 Xenia 为每个国家分配符合 XEN 3166 规则的国家代码,或者指出无法做到。

输入格式

第一行包含两个整数 $N$ 和 $K$ ($1 \le N \le 1000; 1 \le K \le 200$),分别表示国家数量和国家代码长度。接下来的 $N$ 行,每行包含一个长度在 $1$ 到 $200,000$ 之间的字符串,由大写英文字母(A-Z)组成。第 $i$ 行的字符串表示第 $i$ 个国家的名称。保证所有国家名称的长度之和不超过 $200,000$。同时保证没有两个国家拥有相同的名称。

输出格式

  • 如果 Xenia 可以为每个国家分配符合 XEN 3166 规则的国家代码,则在第一行输出“YES”。接下来的 $N$ 行,每行包含一个字符串。第 $i$ 行的字符串表示第 $i$ 个国家的国家代码。如果存在多种可能的分配方案,你可以输出其中任意一种。
  • 如果无法为每个国家分配符合 XEN 3166 规则的国家代码,则仅在单行输出“NO”。

样例

样例输入 1

2 2 
INDIA 
INDONESIA

样例输出 1

YES 
ID 
IN

说明 1

第一个样例中的场景与题目描述中给出的场景相同。

样例输入 2

3 2 
IBAA 
IAAA 
IAAC

样例输出 2

NO

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.