#1544. 稀疏数组

稀疏数组

题目描述

所谓稀疏数组是指数组中大部分内容都没有被使用(或者为0\red 0),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为节省内存空间,并不影响数组中原有的内容值,可以采用一种压缩的方式来表示稀疏数组的内容。如有一个大小为10×10\red {10\times 10}的数组,内容如下:

0\red{0} 1\red{1} 2\red{2} 3\red{3} 4\red{4} 5\red{5} 6\red{6} 7\red{7} 8\red{8} 9\red{9}
0\red{0} 3\red{3}
1\red{1}
2\red{2}
3\red{3 } 1\red{1} 2\red{2}
4\red{4 }
5\red{5} 5\red{5}
6\red{6}
7\red{7}
8\red{8}
9\red{9} 6\red{6}

可以看出,这个数组中只用了5\red{5}个元素,而其他的元素空间就浪费了,为了节省空间,我们可以使用稀疏数组来表示这个数组。

10\red{10} 5\red{5} 第一部分
0\red{0} 1\red{1} 3\red{3} 第二部分
3\red{3} 0\red{0} 1\red{1}
3\red{3 } 1\red{1} 2\red{2}
5\red{5} 7\red{7} 5\red{5}
9\red{9} 6\red{6}

此数组的第一部分即第一行记录的是原数组的列数和行数及元素的使用个数。第二部分记录的是原数组中非零元素的行数、列数和元素的值。请编写一程序以,读入原始数组,输出压缩数组。

输入格式

输入的第一行为NM(1<=N,M<=50)\red{N,M(1<=N,M<=50)},即N\red{N}M\red{M}列,以下是N\red{N}行是数组元素,保证非0\red{0}元素个数不超过三分之一。

输出格式

即稀疏数组。

样例

输入样例

10 10

0 3 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

1 2 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 5 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 6 0 0

输出样例

10 10 5

0 1 3

3 0 1

3 1 2

5 6 5

9 7 6