#P1526. Call Forwarding

Call Forwarding

题目描述

得益于计算机技术的发展,电话系统的功能在过去十年中得到了极大的增强。我们有了自动菜单、高级答录机、会议电话功能、群组呼叫等。公司电话系统的一个常见功能是设置呼叫转移。例如,如果NobodysHomeCompanyNHCNobody's Home Company(NHC)BobBob去度假,他会设置将所有打给他的电话转接到他的同事JaneJane。本问题探讨电话系统如何跟踪呼叫转移。

NHC的所有电话都有四位数的分机号。员工可以通过电话界面输入适当的信息来设置呼叫转移。如果员工要外出,他们会输入以下信息:他们的分机号、离开时间、外出时长以及电话应转接到的分机号,约束条件如下:

  • 所有分机号由四位数组成。
  • 分机号0000000099999999保留用于特殊用途,员工不会输入这些号码。
  • 时间以1小时为增量记录,基于每年新年午夜从00000000开始的时钟。因此,员工在描述离开时间时,总是使用0000000087848784(即36624366*24)之间的整数。呼叫转移系统每年年初会完全重置。
  • 设置在时间XX开始、持续时长为Y的呼叫转移将从时间X到时间X+YX+Y(含)生效。
  • 用户输入的请求是“良好”的。他们遵循格式规则,不会输入持续时间超过年末的请求,也不会为同一分机号输入时间重叠的请求。即使用户输入的信息正确、清晰且不重叠,呼叫转移系统仍可能出现退化情况。例如,如果BobBob将电话转接到SueSueSueSue将电话转接到JoeJoe,而JoeJoe又将电话转接到Bob,那么当有人拨打这三人的分机号时,电话将无限转接。为防止这种情况,呼叫转移系统使用“死胡同”号码99999999。任何拨打涉及此类退化情况的分机号的电话都会被转接到特殊分机号99999999

输入格式

第一行包含一个整数NN1N101 ≤ N ≤ 10),表示程序将模拟的呼叫转移系统数量。每个呼叫转移系统由00100100行“源分机号 开始时间 持续时间 目标分机号”组成。这些行表示用户设置的从“源分机号”到“目标分机号”的呼叫转移请求,开始时间为“开始时间”,持续时长为“持续时间”,格式为dddddddddddddddddddd dddd dddd dddd。如果“源分机号”为00000000,则表示这部分输入结束。呼叫转移请求按接收顺序列出。随后是1行或多行“时间 分机号”,格式为dddddddddddd dddd,按“时间”非递减顺序排列,表示在“时间”拨打“分机号”的电话。如果“时间”为90009000,则表示这部分输入结束。

输出格式

输出的第一行必须为CALLFORWARDINGOUTPUTCALL FORWARDING OUTPUT。随后是每个模拟呼叫转移系统的信息部分。每个部分以SYSTEMNSYSTEM N开头,其中N是系统编号(1, 2, ...)。在部分中,每行描述一个拨打电话的结果,格式为ATddddCALLTOddddRINGSddddAT dddd CALL TO dddd RINGS dddd。输出的最后一行应为ENDOFOUTPUTEND OF OUTPUT

示例输入与输出

输入数据 1

2
1111 0100 0200 2222
1111 0301 0500 4444
2222 0200 0200 3333
3333 0250 1000 1111
7777 1000 2000 7777
0000
0050 1111
0150 1111
0200 1111
0225 2222
0270 1111
0320 1111
0320 3333
0900 3000
1250 3333
1250 7777
9000
0000
3000 1111
9000

输出数据 1

CALL FORWARDING OUTPUT
SYSTEM 1
AT 0050 CALL TO 1111 RINGS 1111
AT 0150 CALL TO 1111 RINGS 2222
AT 0200 CALL TO 1111 RINGS 3333
AT 0225 CALL TO 2222 RINGS 3333
AT 0270 CALL TO 1111 RINGS 9999
AT 0320 CALL TO 1111 RINGS 4444
AT 0320 CALL TO 3333 RINGS 4444
AT 0900 CALL TO 3000 RINGS 3000
AT 1250 CALL TO 3333 RINGS 1111
AT 1250 CALL TO 7777 RINGS 9999
SYSTEM 2
AT 3000 CALL TO 1111 RINGS 1111
END OF OUTPUT

来源

Mid-Atlantic 1996