#P2585. Window Pains
Window Pains
中文题面:
描述
布德罗喜欢多任务处理,尤其是在使用电脑时。
他从不满足于一次只运行一个应用程序,通常会同时运行九个应用程序,每个程序独立窗口。
由于屏幕空间有限,他将这些窗口重叠,并将当前需要操作的窗口置于最前。
若将他的屏幕视为一个的方格网格,每个窗口对应以下的布局:
11..11.......... | .22..22......... | ..33..33........ |
....44..44...... | .....55..55..... | ......66..66.... |
........77..77.. | .........88..88. | ..........99..99 |
示例
若先将窗口1置于最前,再将窗口2置于最前,结果可能为:
122?122????????? | 若接着将窗口4置于最前,则可能变为: | 122?442?44?????? |
后续操作依此类推。
问题背景
布德罗的电脑极不稳定,常意外崩溃。
他可通过观察窗口图形判断是否异常——若图形不符合“窗口依次置顶”的逻辑,则说明发生崩溃。
你的任务是验证给定的屏幕快照是否符合这一规则。
输入:
输入包含最多个非空数据集,格式如下(数据集间无空行):
起始行:单行内容 START
屏幕快照:四行,每行表示网格的窗口状态。
每行由空格分隔的数字组成,例如:
1 2 3 4
5 6 7 8
9 A B C
D E F G
结束行:单行内容 END
所有数据集结束后,最后一行为 ENDOFINPUT。
输出:
对每个数据集,输出一行:
若存在合法的窗口置顶顺序能生成给定快照,输出:
THESE WINDOWS ARE CLEAN
否则输出:
THESE WINDOWS ARE BROKEN
注意
每个窗口的可见部分必须位于其原始区域内。
例如,数字1只能出现在左上角的区域。
输入数据 1
START
1 2 3 3
4 5 6 6
7 8 9 9
7 8 9 9
END
START
1 1 3 3
4 1 3 3
7 7 9 9
7 7 9 9
END
ENDOFINPUT
输出数据 1
THESE WINDOWS ARE CLEAN
THESE WINDOWS ARE BROKEN
来源
2003年美国南中央地区大学生程序设计竞赛