#P13852. [CERC 2023] Human Resources [Can't Judge Yet]

[CERC 2023] Human Resources [Can't Judge Yet]

Description

你在 ECorp 工作,你们的人力资源部门正在将员工数据从 Hooli 提供的本地系统迁移到由一家新创公司 Pied Piper 提供的云原生解决方案。不幸的是,新系统尚未具备与旧系统相同的功能,他们需要你的帮助来存储和展示整个管理结构。由于新系统非常精简并注重资源使用,因此他们只能将存储空间增加两千比特。

Input Format

输入的第一行是要执行的命令:ENCODEDECODE

Encode

你将会收到若干行,描述经理及其直接下属。每一行都以经理的名字开始,后面跟一个冒号,再后面是一个用空格分隔的直接下属名单,按从最喜欢到最不喜欢的顺序排列。冒号后会紧跟一个空格。如果某人有上级经理,那么在输入中不会在上级经理之前列出他。

Decode

在解码的情况下,你将会得到程序在编码阶段的输出:即所有员工名字的列表(顺序任意,每行一个名字),然后是一行二进制字符串 BB

Output Format

Encode

程序必须首先输出所有员工的名字,每行一个,顺序任意(这是高层管理的要求)。然后额外输出一行编码字符串 BB,该字符串只能由 01 组成,长度不得超过 2048 个字符。

Decode

程序必须输出原始的管理结构,格式与输入时相同。经理的定义顺序不必与原始输入完全一致,但如果某人有上级经理,则必须在上级经理之后出现。然而,对于任意一个经理,其下属的顺序必须保持不变(从最喜欢到最不喜欢)。

ENCODE
Janez: Josip Zofia
Zofia: Karolina
Josip
Karolina
Janez
Zofia
00101100
DECODE
Josip
Karolina
Janez
Zofia
00101100
Janez: Josip Zofia
Zofia: Karolina

Hint

注释

在上面的例子中,编码使用了连续两个字符来表示名单中的每个人。
11 表示 CEO(Janez)。
00 表示层级为第二层的员工。在 CEO 的直接下属列表中,他们的顺序与编码时的名字列表顺序一致(Josip 和 Zofia),此处刚好有两人。
10 表示 Zofia 的下属,而 01 则表示 Josip 的下属,但 Josip 实际上没有下属。

输入限制

  • 2ECorp 的员工总数6002 \leq \text{ECorp 的员工总数} \leq 600
  • B2048|B| \leq 2048
  • 员工名字最长 10 个字符,仅由英文字母的大小写组成。
  • 恰好有一名没有经理的员工(公司 CEO),且任何员工都不会有超过一名经理。

翻译由 ChatGPT-5 完成