ECNU XCPC 2021 December Training

A. 矩阵变换2

单点时限: 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。

样例

Input
3 3 3
1 1 3
2 2 1
1 2 2
Output
3 1 3
2 2 2
0 1 0
Input
5 3 5
1 1 1
1 3 1
1 5 1
2 1 1
2 3 1
Output
1 1 1
1 0 1
1 1 1
1 0 1
1 1 1

提示

样例1解释
avatar

使用cincout可能会导致超时。可以在main函数开头关闭同步:

std::ios::sync_with_stdio(false);

或者使用scanfprintf