#P3829. Seat taking up is tough
Seat taking up is tough
描述
学生们经常在占座时遇到问题。当两名学生想要同一个座位时,很可能会引发争吵。

当此类话题出现在论坛(BBS)上时,会产生非常恶劣的影响。
因此,我们急需一套占座规则。经过几天的讨论,规则终于确定如下:
如下图所示,教室里的座位排列成一个行列的网格,网格中的每个单元格代表一个座位。西北角座位的坐标为,东南角座位的坐标为。众所周知,有些座位让人感觉舒适,有些则不然。因此,每个座位都有一个“舒适度指数”。

学生可以为自己和朋友占座。当然,如果一个座位已被占用,其他人就不能再占用。
为了方便朋友之间的交流,学生在占座时希望所需的所有座位在同行且连续。如果满足条件,他会占用所有需要的座位,并将最西边的座位留给自己。例如,如果一个学生需要占用3个座位,那么占用、、并将留给自己是可行的;但占用、、是无效的,因为这些座位不连续。在完成占座任务的前提下,学生总是希望自己的座位“舒适度指数”尽可能高。
然而,如果学生无法占用所有需要的座位,他会改为只为自己占一个座位,因为他不想向朋友解释“为什么他们能占到座位而我不能?”在这种情况下,他仍然希望自己的座位“舒适度指数”尽可能高。
每个人都想知道自己可以占用哪些座位。这个问题对他们来说可能有些复杂,因此他们希望你编写一个程序来解决。
输入
输入包含多个测试用例,以一行 结束。
每个测试用例的第一行包含三个整数:、和,表示教室有行座位,每行有个座位,表示尝试占座的学生人数。
接下来的行按从北到南的顺序描述座位。每行代表一排座位,包含个整数,表示该排座位从西到东的“舒适度指数”。“舒适度指数”为位整数。
随后是行(称为“学生行”),每行格式为 ,表示学生在时分进入教室,尝试占用个座位。和均为两位数字,可能包含前导零,为整数。注意,学生进入教室后会立即开始占座,且占座过程不耗时。
保证每个座位的“舒适度指数”唯一,且没有学生同时进入教室。
输出
对于每个测试用例,按输入顺序输出行,每行包含两个整数,表示学生为自己预留的座位坐标。如果学生无法占用任何座位,则输出。
5 5 8
11 12 15 14 13
21 22 25 24 23
16 17 20 19 18
6 7 10 8 9
1 2 5 4 3
09:00 2
09:01 5
09:02 5
09:03 5
09:04 5
09:05 3
09:06 2
09:07 3
0 0 0
2 3
3 1
1 1
4 1
5 1
2 5
2 1
-1
题目来源
2009年宁波程序设计竞赛