题意:给你一个NXM的矩阵,一开始元素都为0,然后有两种操作,一种是将某一行的数变为一个数,另外一种是将某一列的数变为一个数,问最后的矩阵是怎么样的。
思路:只有最后一个操作有用,那么记录一下时间戳就可以了
#include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <ctime>
#include <cmath>
//#include<utility>
#include <cctype>
using namespace std;
const int maxn= 5005;
#define LL long long
int cas=1,T;
pair<int,int>r[maxn],c[maxn];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for (int i = 1;i<=n;i++)
r[i]=make_pair(0,0);
for (int i = 1;i<=m;i++)
c[i]=make_pair(0,0);
for (int i = 1;i<=k;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if (x==1)
r[y]=make_pair(z,i);
else
c[y]=make_pair(z,i);
}
for (int i = 1;i<=n;i++)
{
for (int j = 1;j<=m;j++)
{
if (r[i].first==0 && c[j].first==0)
printf("0 ");
else if (r[i].first==0)
printf("%d ",c[j].first);
else if (c[j].first==0)
printf("%d ",r[i].first);
else if (r[i].second>c[j].second)
printf("%d ",r[i].first);
else
printf("%d ",c[j].first);
}
printf("\n");
}
//freopen("in","r",stdin);
//scanf("%d",&T);
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return 0;
}