#1158. 梦神的大平层

梦神的大平层

No submission language available for this problem.

题目描述

时间限制:1000ms

空间限制:256mb

Yuilice最近一直在失眠,一夜未眠都是非常正常的事情,所以他去向梦神求助,希望能够通过梦神的帮助解决这个问题。

梦神给了Yuilice一个难题,让他每天睡觉前去解题从而每天都睡得香香的,但是坏心眼的的楠楠因为晚上打CS找不到开黑的伙伴,所以他决定解开这个难题从而让Yuilice再次失眠,彻夜在米垃圾被折磨。

现在为了保护Yuilice的好梦,你需要抢在楠楠之前解开这道谜题,打开题目之后,你惊讶的发现问题居然是梦神的大平层设计图。

现在已知梦神的大平层可以由一个N×MN \times M的二维矩阵来表示,同时在矩阵的每一个格子当中,都会有一个数字ai,j(1ai,j15)a_{i,j}(1 \leq a_{i,j} \leq 15),代表在该格当中哪个方向有着墙壁。例如数字5,可以被视为是二进制的0101,其中第一个数字0代表北面没有墙壁,第二个数字1代表东面有墙壁,第三个数字0代表南面没有墙壁,第四格数字1代表西面有墙壁。

现在已知在大平层当中,每个房间会被墙壁所包围起来,请你求出每个房间所占的方格总数,并且按照从大到小的顺序进行输出每个房间的所占方格总数。

输入格式

第一行共会输入两个整数N,M(1N,M103)N,M(1 \leq N,M \leq 10^3),代表大平层的二维矩阵。

随后NN行,每行输入MM个整数ai,ja_{i,j},代表每个方格的状态。

输出格式

按照从大到小的顺序输出每个房间的所占方格总数,每两个数字之间用空格隔开。

样例 #1

样例输入 #1

4 5
9 14 11 12 13
5 15 11 6 7
5 9 14 9 14
3 2 14 3 14

样例输出 #1

9 4 4 2 1

提示

题目保证输入数据当中所有边缘都一定会有墙壁,但是我们默认在最外围有一圈墙壁围着大平层。

注: 假如两个格子当中有一堵墙,那么两个格子就不能直接来往。

对于 50%50 \% 的数据,1N,M1001 \le N, M \le 100

对于 100%100 \% 的数据,1N,M1031 \le N, M \le 10^3