#include<cstdio>
int sj[101][101]={0};
int n,m,k,x,y,ans=0;
void js()//计算没有光或物体的坐标有几个
{
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (sj[i][j]==0)
ans++;
}
void hb(int x,int y)//火把覆盖的坐标
{
int xy[12][12]={{-2,0},{-1,0},{-1,1},{0,1},{0,2},{1,1},{1,0},{2,0},{1,-1},{0,-1},{0,-2},{-1,-1}};
int xx,yy;
for(int i=0;i<12;i++)
{
xx=x+xy[i][0];
yy=y+xy[i][1];
if (xx>0 && yy>0 && xx<=n && yy<=n && sj[xx][yy]==0)
sj[xx][yy]=1;
}
}
void ys(int x,int y)//莹石覆盖的坐标
{
int xx=x-2;
int yy=y-2;
for (int i=xx;i<=xx+4;i+1)
for (int j=yy;j<=yy+4;j+1)
{
if (i>0 && j>0 && i<=n && j<=n && sj[i][j]==0)
sj[i][j]=1;
}
}
int main ()
{
scanf ("%d %d %d",&n,&m,&k);
while(m)
{
scanf("%d %d",&x,&y);
sj[x][y]=1;
hb(x,y);
m--;
}
while(k)
{
scanf("%d %d",&x,&y);
sj[x][y]=1;
ys(x,y);
k--;
}
js();
printf ("%d",ans);
}
本题程序超时了请教老师同学有无方法修改