#LWB0005. 刷怪

刷怪

刷怪

题目背景

ZY、ZHB、JGY、小罗翔 他们在矿洞里获得了足够的矿物和石头,为了向下界进发,他们需要更多的时候,这时他们觉得附魔了横扫之刃的剑砍牛更快,但附魔需要经验,于是他们建造了一个刷怪塔,但由于各种问题,刷怪塔有个别部分不能正常运行,所以他们想知道这个部分的某个点能否正常运行

ps:他们没有建围墙(最外层一圈的方块不能刷怪)。

题目描述

给定刷怪塔,请你写一个程序告诉他们能否正常运行

输入格式

第一行两个整数 m,a,bm , a , b 表示 mm 次询问,刷怪塔的面积为 aba * b。 下面 aa 行,每行 bb 个整数 xx,用空格分割,表示方块材质

输出格式

输出 mm 行“YES”或“NO”,表示这个点能否正常运行,如果不能,请给出不能原因;

约定

无法刷怪的情况:

1.上方漏光或周围的四个方块的任意一个上方漏光( x=0x=0 )

2.地面上没有方块( x=1x=-1 )

3.地面方块不能刷怪( 2x92\le x\le 9

如有多个原因导致不能刷怪,按以上优先级输出优先级最高的一个

无法刷怪的原因:

1.漏光输出 light light

2.缺少方块输出 air air

3.材质不对输出 change change

样例

2 3 7
1 1 4 5 1 4 -1
1 9 1 9 8 1 0
6 6 6 6 6 6 6
3 3
2 3
NO light
YES

提示

数据规模与约定

对于 10%10\% 的数据,1m,a,b11 \le m , a , b \le 1

对于另 30%30\% 的数据,m10m \le 10a,b100a , b\le 100

对于 90%90\% 的数据,m103m \le 10^3a,b103a , b\le 10^3

对于 100%100\% 的数据,m108m \le 10^8a,b104a , b \le 10^41x9-1 \le x \le 9

最后一个点限制时间 2.1s 2.1s,其余 0.1s0.1s

如果你最后一个点TLE了,不要怀疑,你被卡常了,请尝试使用更高效的代码。

inline int read()
{
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

函数返回值为读入的第一个整数。

快速读入作用仅为加快读入,并非强制使用。