#P13849. [CERC 2023] Equal Schedules

[CERC 2023] Equal Schedules

Description

你是某个高可用服务的值班人员之一,该服务为用户提供编程题目求解。作为一个组织良好的团队,你们有一份值班表,明确规定了谁在什么时间负责该服务。现在一位同事给你发送了一份新的值班表,你想确认每个人的值班时长是否与之前相同,或者输出任何差异。

值班表由若干行组成,每行格式为 si ei tis_i \ e_i \ t_i,其中 sis_ieie_i 表示队员 tit_i 的值班起止时间(从某个起始小时算起,左闭右开区间)。

例如,给定一份样例排班表:

0 7 jan
7 14 tomaz
14 20 jure
20 24 jan
24 25 tomaz
25 26 jure

我们可以看到,jan 在最初的 77 小时(小时 0,1,2,3,4,5,60, 1, 2, 3, 4, 5, 6)值班,接下来 tomaz 值班 77 小时,……最终统计:jan 总共值班 1111 小时,tomaz 值班 88 小时,jure 值班 77 小时。

Input Format

输入包含两份排班表,中间由一行水平分隔线 ------ 分隔。
每份排班表包含一行或多行,格式为 si ei tis_i \ e_i \ t_i,其中整数 si,eis_i, e_i 表示队员 tit_i 在从 sis_i 小时开始直到 eie_i 小时(不包含 eie_i)之间值班。
在第二份排班表之后,有一行 ====== 作为输入结束。

Output Format

输出两份排班表的差异,格式为 ti ±dit_i \ \pm d_i,其中 did_i 表示队员 tit_i 在第二份排班表和第一份排班表之间的时长差异。
输出按照队员名字的字母顺序排列;若某位队员的时长没有变化,则不输出该队员。差异必须带有正负号。
如果没有任何差异,则输出一行:No differences found.

0 7 jan
7 14 tomaz
14 20 jure
20 24 jan
24 25 tomaz
25 26 jure
------
0 9 tomaz
9 20 jan
20 26 jure
======
jure -1
tomaz +1
0 7 nino
7 14 bgs
14 21 ines
------
0 7 ines
7 14 nino
14 21 bgs
======
No differences found.

0 3 vid
3 6 maks
6 9 janez
------
0 1 vid
1 2 vid
2 3 vid
3 4 maks
4 5 maks
5 6 maks
6 7 janez
7 8 janez
======
janez -1

Hint

输入限制

对于每份排班表,满足以下条件:

  • s1=0s_1 = 0
  • si<eis_i < e_i
  • si+1=eis_{i+1} = e_i
  • ei1000e_i \leq 1000
  • 名字 tit_i 仅包含英文小写字母
  • 3ti203 \leq |t_i| \leq 20

翻译由 ChatGPT-5 完成