Responsive image

问题 2622 --Oshwiciqwq的电梯

2622: Oshwiciqwq的电梯

时间限制: 1 Sec  内存限制: 512 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

Oshwiciqwq 是一名电梯管理员,他管理着幼儿园大楼的 k 个电梯。这个大楼是一个长方体,长 n 个单位,宽 m 个单位,高 h 个单位。每个长宽高各为 1 个单位的空间是一个房间,可以用三维坐标 (x, y, z)来表示,其中 1 ≤ x ≤ n, 1 ≤ y ≤ m, 1 ≤ z ≤ h。房间里有若干电梯的入口,可以搭乘电梯前往其他房间。幼儿园大楼有着非常赛博朋克的设计,有平行三个坐标轴运行的三种电梯,并且每个电梯是朝坐标增大的方向环线运行的,在坐标最大处可以运行一次瞬移到坐标最小处。例如,从 (x, y, z) 房间出发,搭乘沿y 轴运动的电梯,可以到达 (x, i, z),其中 1 ≤ i ≤ m,并且可以从 (x, m, z)一步到达(x, 1, z)。同时,不同电梯的运行轨道不相交,无需担心电梯之间的碰撞。
每个房间都能够搭乘三种电梯各一个,保证了每两个房间之间都是间接可达的。所有电梯运行一个单位的时间为 1 秒,容量为无穷大。每个电梯初始所在位置不同,第 i 个电梯 0 秒时在坐标为 (exi, eyi, ezi)的房间。电梯只能在整秒时刻开始移动或者结束移动,并且在电梯到达某房间后,乘客会在到达的同一时刻瞬移进出电梯门。
这些电梯每天需要处理很多乘客的需求。第 i 个乘客在 pti 秒到达,想要从位于 (fxi, fyi, fzi) 的房间到达位于 (txi, tyi, tzi) 的房间。为了更快地到达目的地,他们会听从电梯管理员的指挥进出电梯。作为高明的电梯管理员Oshwiciqwq 早已掌握了所有乘客的请求信息,于是他开始调度电梯的运行和规划乘客的路线。
他会事先把每个乘客的路线计算出来,并且分段分配给某几个电梯,每个乘客只会搭乘固定的几个电梯,并且在规定的房间换乘。他规定乘客的路线为:

即按顺序先后乘坐平行 x 轴,y 轴与 z 轴的电梯。如果某个阶段无需乘坐电梯已经到达,则直接忽略。在乘客进行某个阶段的移动时,只会搭乘对应方向的电梯。
1. 电梯一开始在给定的坐标,方向为平行于对应坐标轴的正方向,一直环线运行
2. 每到达一个房间,所有到达当前阶段目的地的乘客会按编号从小到大下电梯。然后在这个房间的乘客会按编号从小到上电梯。一个乘客下电梯之后,如果还没有到达最终目的地,那么会在原地等待下一个电梯,换乘至少需要一秒的时间。即,在出电梯的下一秒才能进入另一个电梯。
3. 同一时刻编号小的电梯的所有进出事件发生在编号大的电梯前。
在 Oshwiciqwq 完成了一天的工作之后,他惊恐地发现电梯管理终端的日志文件损坏了,无法提交工作报告。此时他手上只有电梯初始情况和乘客的请求记录,希望你能帮他恢复这个日志文件,按照时间从小到大列举出乘客进出电梯的信息。






输入描述

第一行 3 个正整数 n, m, h(2 ≤ n, m, h ≤ 8),表示大楼的长、宽、高。
第二行 1 个正整数 k(k = n × m + n × h + m × h),表示电梯的数量。
接下来 k 行,其中第 i 行 4 个非负整数 typei, exi, eyi, ezi(0 ≤ typei ≤ 2, 1 ≤ exi ≤ n, 1 ≤ eyi ≤ m,1 ≤ ezi ≤ h),表示编号为 i 的电梯种类和初始坐标。typei = 0, 1, 2 分别表示平行于 x, y, z 坐标轴的电梯。保证它们能满足每个房间都能够搭乘三种电梯。
第 k + 3 行有 1 个正整数 q(1 ≤ q ≤ 50),表示乘客的数量。
接下来 q 行,其中第 i 行 7 个正整数 pti, fxi, fyi, fzi, txi, tyi, tzi(1 ≤ pti ≤ 500, 1 ≤ fxi, txi ≤ n,1 ≤ fyi, tyi ≤ m, 1 ≤ fzi, tzi ≤ h),表示编号为 i 的乘客到达的时间,出发房间的坐标以及目的房间的坐标。保证出发房间坐标和目的房间坐标不完全相同。


输出描述

输出若干行日志文件。
如果是乘客进入电梯,输出 “[time] Person person_id IN Elevator elevator_id at (x, y,z)”。
如果是乘客走出电梯,输出 “[time] Person person_id OUT Elevator elevator_id at (x, y,z)”。
其中 time 为时间(秒),需要加上单位 “s”。elevator_id 为电梯的编号,person_id 为乘客的编号,(x, y, z) 为房间的坐标。

样例输入

2 2 2
12
0 1 1 1
0 1 1 2
0 1 2 1
0 1 2 2
1 1 1 1
1 1 1 2
1 2 1 1
1 2 1 2
2 1 1 1
2 1 2 1
2 2 1 1
2 2 2 1
3
1 2 2 2 1 1 1
3 1 1 2 2 2 1
50 2 1 2 1 2 1

样例输出

[1s] Person 1 IN Elevator 4 at (2, 2, 2)
[2s] Person 1 OUT Elevator 4 at (1, 2, 2)
[3s] Person 1 IN Elevator 6 at (1, 2, 2)
[4s] Person 2 IN Elevator 2 at (1, 1, 2)
[4s] Person 1 OUT Elevator 6 at (1, 1, 2)
[5s] Person 2 OUT Elevator 2 at (2, 1, 2)
[5s] Person 1 IN Elevator 9 at (1, 1, 2)
[6s] Person 2 IN Elevator 8 at (2, 1, 2)
[6s] Person 1 OUT Elevator 9 at (1, 1, 1)
[7s] Person 2 OUT Elevator 8 at (2, 2, 2)
[9s] Person 2 IN Elevator 12 at (2, 2, 2)
[10s] Person 2 OUT Elevator 12 at (2, 2, 1)
[51s] Person 3 IN Elevator 2 at (2, 1, 2)
[52s] Person 3 OUT Elevator 2 at (1, 1, 2)
[54s] Person 3 IN Elevator 6 at (1, 1, 2)
[55s] Person 3 OUT Elevator 6 at (1, 2, 2)
[57s] Person 3 IN Elevator 10 at (1, 2, 2)
[58s] Person 3 OUT Elevator 10 at (1, 2, 1)

提示


请注意输出的顺序,建议仔细阅读题面中关于电梯运行策略的部分。

来源

[提交][状态]
ACM算法攻关部
  • Anything about this OnlineJudge, Please Contact Administrator. Click add QQ

    OJ system based on HUSTOJ Project , UI based on Twitter Bootstrap

    Copyright 2016 ACM算法攻关部
    关于网站改版