Rinne Loves Study

链接:https://ac.nowcoder.com/acm/contest/370/C
来源:牛客网

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

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

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

输入
3 3 3
1 2
2 3
1 3

输出
0 0 2
1 1 2
3 3 3

备注:
n×m≤10^ T≤10^5

一开始的代码,提交后运行超时

#include<bits/stdc++.h>
using namespace std;
int a[10000][10000]={0};
int main(){
    int n,m,t,i,x,y,j;
    cin>>n>>m>>t;
    for(i=1;i<=t;i++){
        cin>>x>>y;
        if(x==1){
            for(j=0;j<m;j++)
                a[y-1][j]=i;
        }
        if(x==2) {
            for(j=0;j<n;j++)
                a[j][y-1]=i;
        }
    }
    for(i=0;i<n;i++){
        for(j=0;j<m;j++)
            cout<<a[i][j]<<" ";
        cout<<endl;
    }
}

修改过后

#include<bits/stdc++.h>
using namespace std;
int a[100000],b[100000];
int main(){
	int n,m,t,x,y,i,j;
	cin>>n>>m>>t;
	for(i=1;i<=t;i++){
		cin>>x>>y;
		if(x==1) a[y-1]=i;
		else b[y-1]=i;
	}
	for(i=0;i<n;i++){
		for(j=0;j<m;j++)
			cout<<max(a[i],b[j])<<" ";
		cout<<endl;
	}
}
上一篇:NC22594 Rinne Loves Graph


下一篇:牛客小白月赛11 Rinne Loves Xor(异或运算好题)