单点时限: 1.0 sec
内存限制: 512 MB
可怜的Rachel又双叒叕睡着了。这次的矩阵总共有 $n$ 行 $m$ 列,初始值都为 $0$,老头在布置矩阵的时候每次操作会指定一行或一列,然后指定一个数,使得这一行或者这一列上全部放上这个数。如果这一行上以前放过其它的数,那么这样的操作将会把原本的数覆盖。
Rachel精疲力尽了。你愿意帮她计算最终的矩形吗?
输入文件共 $q+1$ 行。
输入文件第一行包括三个正整数 $n$,$m$,$q$ ,分别表示矩阵的行数和列数以及老头的操作数。
接下来 $q$ 行,每行三个正整数,$x$ , $y$ , $z$,$x$ 表示操作种类,若 $x=1$ 表示给第 $y$ 行( $y\le n$ )全部放上$z$ 这个数,若 $x=2$ ,则表示给第 $y$ 列( $y\le m$ )全部放上 $z$ 这个数,数据保证 $z\le2^{31}-1$。
数据保证$n,m\le 1000,n\cdot m\le10^5,q\le10^6$
输出文件共n行,每行m个整数,分别用空格隔开。表示最后矩阵上每个位置的数,如果某个位置没有被操作过输出0。
3 3 3 1 1 3 2 2 1 1 2 2
3 1 3 2 2 2 0 1 0
5 3 5 1 1 1 1 3 1 1 5 1 2 1 1 2 3 1
1 1 1 1 0 1 1 1 1 1 0 1 1 1 1
样例1解释
使用cin
和cout
可能会导致超时。可以在main函数开头关闭同步:
std::ios::sync_with_stdio(false);
或者使用scanf
和printf