#P16698. [ICPC 2017 Jakarta R]XEN 3166
[ICPC 2017 Jakarta R]XEN 3166
题目描述
世界上有 个国家,编号为 到 。
每个国家都有一个国家名称和一个国家代码,二者都用字符串表示。
所有字符串只包含大写英文字母 A 到 Z,并且任意两个国家的名称都不同。
广泛使用的国家代码标准 ISO 3166 并不总是保持字典序。例如:
INDIA的代码是IN;INDONESIA的代码是ID。
虽然 INDIA 的国家名称在字典序中小于 INDONESIA,但代码 IN 却大于 ID。
Xenia 因此设计了一套新的标准 XEN 3166。
每个国家代码必须满足以下规则:
- 国家代码是国家名称的一个子序列;
- 国家代码的第一个字符与国家名称的第一个字符相同;
- 国家代码长度恰好为 ;
- 国家名称之间的字典序关系必须与国家代码之间完全一致。
形式化地,若国家名称 的代码为 ,国家名称 的代码为 ,则必须满足:
字符串 是字符串 的子序列,当且仅当存在下标:
满足:
给定所有国家名称,请为每个国家分配一个符合 XEN 3166 规则的国家代码,或判断无解。
输入格式
第一行包含两个整数 :
分别表示国家数量和国家代码长度。
接下来 行,每行包含一个仅由大写英文字母组成的字符串,表示对应国家的名称。
每个国家名称长度满足:
所有国家名称长度之和不超过:
保证任意两个国家名称不同。
输出格式
如果存在合法分配方案,首先输出:
YES
随后输出 行。第 行输出第 个国家的国家代码。
如果有多种合法方案,可以输出任意一种。
如果不存在合法分配方案,只输出:
NO
样例 1
输入
2 2
INDIA
INDONESIA
一种合法输出
YES
ID
IN
样例 2
输入
3 2
IBAA
IAAA
IAAC
输出
NO