做题的时候因为题目太长,就没有关注这道题直接跳过了它,回过头看,其实只是一个背景比较长的模拟,用两个符号实时记录变化过程即可,有几点需要注意,就是本题可以直接开一维数组替代二维数组,所有下标都用m*x+y表示即可
#include<bits/stdc++.h>
using namespace std;
int a[2000000];
int main()
{
int n,m,p,t,flag,f,x,y,val;
cin>>t;
while(t--)
{
memset(a,0,sizeof(a));
scanf("%d%d%d",&n,&m,&p);
flag=0,f=0;
while(p--)
{
scanf("%d%d%d",&x,&y,&val);
if(m*x+y<0||m*x+y>=m*n)
f=1;
else a[m*x+y]=val;
if(x<0||y<0||x>=n||y>=m)
flag=1;
}
if(f==1)
printf("Runtime error\n");
else {
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
printf("%d ",a[m*i+j]);
if(j==m-1)printf("\n");
}
if(flag==1)printf("Undefined Behaviour\n");
else printf("Accepted\n");
}
}
return 0;
}