#P15644. [ICPC 2022 Tehran R] Laboratory Report

[ICPC 2022 Tehran R] Laboratory Report

说明

你被指派为一个医学实验室编写软件。该软件的一部分是关于生成已进行的医学检验报告。一项医学检验包括对从患者身上采集的样本(如血液或尿液)进行一系列测量。每次测量都有一个名称、一个单位和一个结果(数值)。例如,血液样本中的“胆固醇”可能是 180180 mg/dl。此外,每次测量都附有一个参考表。参考表是一套通用的规则集,根据患者的测量结果为其分类一个(状态)标志。例如,如果“甘油三酯”的结果在范围 [10,190][10,190] 内,则被分类为“正常”;如果结果低于或高于此范围,则分别标记为“低”或“高”。

给定所有测量的参考表和几位患者的结果,你需要生成他们的医学检验报告。

输入格式

本问题输入规范中的文本是一个非空的、由任意可打印 ASCII 字符组成的字符串,包括空格、标点和字母数字字符,但不包括换行符。保证文本不以空白字符开头或结尾。此外,输入中的所有实数均为十进制格式,最多 77 个字符,其绝对值不超过 10710^7

输入由多个(至少 22 个,至多 100100 个)部分组成。每个部分以单独一行包含 8080 个连续的“=\texttt{=}”字符结束。

参考表在第一部分中描述。至少有 11 个,至多有 100100 个参考表,相邻两个表的行之间由单独一行包含 7575 个连续的“-\texttt{-}”字符分隔。参考表的第一行包含测量名称,这是一个长度最多为 2525 的文本,在所有参考表中是唯一的。第二行包含一个长度最多为 1515 的文本作为测量单位。参考表的其余部分描述其标志分类规则,它要么是单独一行,要么是一组成对的行。在前一种情况下,该单独一行指定了将结果分类为 Normal 的标准。在这种情况下,如果测量结果不符合此标准,则被分类为 Abnormal。在后一种情况下,参考表的其余部分以一组非空的(最多 1010 个)成对行的形式出现,分类规则更为复杂。在这种情况下,每对的第一行指定分类标准,第二行包含一个长度最多为 2525 的文本作为标志名称,前面有两个空格字符。在上述任何情况下,分类标准都是一个长度最多为 5050 的文本,采用以下形式之一(AABB 是实数,xx 是测量结果):

标准格式 含义
< A\texttt{<}\ A x<Ax<A
<= A\texttt{<=}\ A xAx\leqslant A
> A\texttt{>}\ A x>Ax>A
>= A\texttt{>=}\ A xAx\geqslant A
[A, B][A,\ B]ABA\sim B AxBA\leqslant x\leqslant B
[A,B)[A,B) Ax<BA\leqslant x<B
(A,B](A,B] A<xBA<x\leqslant B
(A,B)(A,B) A<x<BA<x<B

在指定分类标准的文本中,不同部分之间可能有任意数量的空格。因此,例如,[2,5][2,5][ 2 , 5][\ 2\ ,\ 5]2 52\sim\ 5 都是有效且等价的文本。当参考表的标志分类规则用一组成对的行描述时,保证测量值空间被给定的分类标准集合正确划分;即,每个可能的测量结果恰好匹配所提供的分类标准之一。

输入中的后续部分指定了患者的测量结果。每个部分的第一行包含一个长度最多为 6060 的文本作为患者姓名。接下来的每一行描述该患者的一个测量结果,其中测量名称和值(一个实数)之间由任意数量(112020 之间)的空格字符分隔。单个患者至少有 11 个,至多有 100100 个测量结果。每个测量名称在一位患者的测量结果中最多出现一次。

输出格式

对于输入中除第一部分(描述参考表的部分)之外的每个部分,你应编写其对应患者的实验室检验报告,后跟单独一行包含 8080 个连续的“=\texttt{=}”字符。一份报告由包含患者姓名的一行和一个描述测试结果的表格组成。表格格式在样例输出中有示例说明。如果相应输入部分中有 kk 次测量,则该表格应有 k+4k+4 行,每行长度恰好为 7575。所有空白区域应用空格字符填充。该表格有 44 列:

  • Test:测量名称;从行首(第 11 个字符)开始。
  • Result:测量结果值,按照输入中的确切格式打印;从该行的第 2727 个字符开始。
  • Unit:测量单位;从该行的第 3535 个字符开始。
  • Flag:根据测量结果和参考表分类的标志;从该行的第 5151 个字符开始。如果标志是 Normal,则该单元格内不应写入任何内容(除了空格字符)。

输出表格中的测量行应按其在相应输入部分中出现的相同顺序打印。除了测量行之外,表格还应有一个标题行和三条分隔线(包含 7575 个连续的“-\texttt{-}”字符),如样例输出所示。

注意:本题的解决方案评判非常严格。为了使你的输出被视为正确,其所有字符,包括空白字符或大小写字母,都必须与预期输出完全匹配。

Cholesterol
mg/dl
130~200
---------------------------------------------------------------------------
HDL-chol
mg/dl
>= 55
---------------------------------------------------------------------------
Fast Blood Sugar
mg/dl
<70
  Hypoglycemia
70 ~ 99
  Normal
 (99, 126)
 Impaired (Prediabetic)
>= 126
  Diabetic
---------------------------------------------------------------------------
Secret Poison
mg/L
<   0.1
  Noneffective
0.1 ~0.5
  Mild
(   0.5  , 1.5   ]
  Moderate
(1.5,5)
  Severe
[5, 10]
  Lethal (non-instant)
>   10
  Instant Killer
================================================================================
Mr. Fat
Fast Blood Sugar 130
Cholesterol      230
HDL-chol          55
================================================================================
413%3! 4n@+01!3\/!(# /\/@\/@1n`/
Secret Poison   3.8
Cholesterol     150
================================================================================
Y@1d@ 49#@|=@21!
Fast Blood Sugar 90
Secret Poison     7.9
================================================================================
Mr. Fat
---------------------------------------------------------------------------
Test                      Result  Unit            Flag
---------------------------------------------------------------------------
Fast Blood Sugar          130     mg/dl           Diabetic
Cholesterol               230     mg/dl           Abnormal
HDL-chol                  55      mg/dl
---------------------------------------------------------------------------
================================================================================
413%3! 4n@+01!3\/!(# /\/@\/@1n`/
---------------------------------------------------------------------------
Test                      Result  Unit            Flag
---------------------------------------------------------------------------
Secret Poison             3.8     mg/L            Severe
Cholesterol               150     mg/dl
---------------------------------------------------------------------------
================================================================================
Y@1d@ 49#@|=@21!
---------------------------------------------------------------------------
Test                      Result  Unit            Flag
---------------------------------------------------------------------------
Fast Blood Sugar          90      mg/dl
Secret Poison             7.9     mg/L            Lethal (non-instant)
---------------------------------------------------------------------------
================================================================================