#P2585. Window Pains

Window Pains

中文题面:

描述

布德罗喜欢多任务处理,尤其是在使用电脑时。

他从不满足于一次只运行一个应用程序,通常会同时运行九个应用程序,每个程序独立窗口。

由于屏幕空间有限,他将这些窗口重叠,并将当前需要操作的窗口置于最前。

若将他的屏幕视为一个4×44×4的方格网格,每个窗口对应以下2×22×2的布局:

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??????

后续操作依此类推。

问题背景

布德罗的电脑极不稳定,常意外崩溃。

他可通过观察窗口图形判断是否异常——若图形不符合“窗口依次置顶”的逻辑,则说明发生崩溃。

你的任务是验证给定的屏幕快照是否符合这一规则。

输入:

输入包含最多100100个非空数据集,格式如下(数据集间无空行):

起始行:单行内容 START

屏幕快照:四行,每行表示4×44×4网格的窗口状态。

每行由空格分隔的数字组成,例如:

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

注意

每个窗口的可见部分必须位于其原始2×22×2区域内。

例如,数字1只能出现在左上角的2×22×2区域。

输入数据 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年美国南中央地区大学生程序设计竞赛