题目链接:https://ac.nowcoder.com/acm/contest/370/C
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述 

Rinne 喜欢使用一种奇怪的方法背单词,现在这些单词被放在了一个 n×mn×m 的格子里。由于背单词是一个令人烦躁的事情,所以她决定每天只背同一行或者同一列的单词。她一共会背 T 次单词,为了方便巩固,她现在想知道:对于每个单词,最后一次背是什么时候呢?
她这么可爱当然会算啦!但是她想考考你。

输入描述:

第一行三个整数 n,m,T。
接下来 T 行,第 i+1 行描述第 i 天干了什么,每行的格式如下:
`1 x`:说明她在这一天背了第 x 行的单词;
`2 y`说明她在这一天背了第 y 列的单词。
输入的所有量的具体意义请参考「题目描述」。

输出描述:

输出一个 n×m 的矩阵 a, 表示第 i 行第 j 列这个单词最后一次被背诵是在第几天。

输入

3 3 3
1 2
2 3
1 3

输出

0 0 2
1 1 2
3 3 3

备注:

n×m≤1e5,T≤1e5

解题思路

可以申请两个一维数组,来表示第几行第几列是第几天背诵的,然后输出的时候判断一下该单词的行和列哪个是后来背的。

#include <cstdio>
#include <iostream>
using namespace std;
int a[2][100010];
int main()
{
    int n, m, t, v, w;
    scanf("%d%d%d", &n, &m, &t);
    for (int i = 1; i <= t; i++)
    {
        scanf("%d%d", &v, &w);
        a[v - 1][w] = i;
    }
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
            printf("%d ", max(a[0][i], a[1][j]));
        printf("\n");
    }
    return 0;
}