#P3829. Seat taking up is tough

Seat taking up is tough

描述

学生们经常在占座时遇到问题。当两名学生想要同一个座位时,很可能会引发争吵。

当此类话题出现在论坛(BBS)上时,会产生非常恶劣的影响。
因此,我们急需一套占座规则。经过几天的讨论,规则终于确定如下:

如下图所示,教室里的座位排列成一个nnmm列的网格,网格中的每个单元格代表一个座位。西北角座位的坐标为(1,1)(1,1),东南角座位的坐标为(n,m)(n,m)。众所周知,有些座位让人感觉舒适,有些则不然。因此,每个座位都有一个“舒适度指数”。

Figure 1. A class room

学生可以为自己和朋友占座。当然,如果一个座位已被占用,其他人就不能再占用。

为了方便朋友之间的交流,学生在占座时希望所需的所有座位在同行且连续。如果满足条件,他会占用所有需要的座位,并将最西边的座位留给自己。例如,如果一个学生需要占用3个座位,那么占用(2,2)(2,2)(2,3)(2,3)(2,4)(2,4)并将(2,2)(2,2)留给自己是可行的;但占用(2,2)(2,2)(2,4)(2,4)(2,5)(2,5)是无效的,因为这些座位不连续。在完成占座任务的前提下,学生总是希望自己的座位“舒适度指数”尽可能高。

然而,如果学生无法占用所有需要的座位,他会改为只为自己占一个座位,因为他不想向朋友解释“为什么他们能占到座位而我不能?”在这种情况下,他仍然希望自己的座位“舒适度指数”尽可能高。

每个人都想知道自己可以占用哪些座位。这个问题对他们来说可能有些复杂,因此他们希望你编写一个程序来解决。

输入

输入包含多个测试用例,以一行00 00 00结束。

每个测试用例的第一行包含三个整数:nnmmkk1n1 ≤ n,,m30 m ≤ 301k501 ≤ k ≤ 50,表示教室有nn行座位,每行有mm个座位,kk表示尝试占座的学生人数。

接下来的nn行按从北到南的顺序描述座位。每行代表一排座位,包含mm个整数,表示该排座位从西到东的“舒适度指数”。“舒适度指数”为3232位整数。

随后是kk行(称为“学生行”),每行格式为hh:mmhh:mm qq0hh<240 ≤ hh < 240mm590 ≤ mm ≤ 591q501 ≤ q ≤ 50,表示学生在hhhhmmmm分进入教室,尝试占用qq个座位。hhhhmmmm均为两位数字,可能包含前导零,qq为整数。注意,学生进入教室后会立即开始占座,且占座过程不耗时。

保证每个座位的“舒适度指数”唯一,且没有学生同时进入教室。

输出

对于每个测试用例,按输入顺序输出kk行,每行包含两个整数,表示学生为自己预留的座位坐标。如果学生无法占用任何座位,则输出1-1

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年宁波程序设计竞赛