题目描述
话说有一天 linyorson 在“我的世界”开了一个 n \times nn×n 的方阵,现在他有 mm 个火把和 kk 个萤石,分别放在 (x_1, y_1) \sim (x_m, y_m)(x1,y1)∼(xm,ym) 和 (o_1, p_1) \sim (o_k, p_k)(o1,p1)∼(ok,pk) 的位置,没有光或没放东西的地方会生成怪物。请问在这个方阵中有几个点会生成怪物?
P.S. 火把的照亮范围是:
萤石:
输入格式
输入共 m + k + 1m+k+1 行。
第一行为 n, m, kn,m,k。
第 22 到第 m + 1m+1 行分别是火把的位置 x_i, y_ixi,yi。
第 m + 2m+2 到第 m + k + 1m+k+1 行分别是萤石的位置 o_i, p_ioi,pi。
注:可能没有萤石,但一定有火把。
输出格式
有几个点会生出怪
全部代码
#include<iostream>
using namespace std;
int main(){
int n,light1_num,light2_num;
int x,y,light_space=0;
int space[100][100];
cin>>n>>light1_num>>light2_num; // n x n的矩阵
for(int i=0;i<light1_num;i++){
cin>>x>>y;
x=x-1;
y=y-1;
for(int j=0;j<3;j++){
for(int z=0;z<3;z++){
if(space[x-1+j][y-1+z]==0&&x-1+j>=0&&y-1+z>=0&&x-1+j<n&&x-1+z<n){light_space+=1;space[x-1+j][y-1+z]=1;}
}
}
if(space[x-2][y]==0&&x-2>=0&&y>=0&&x-2<n&&y<n){light_space+=1;space[x-2][y]=1;}
if(space[x+2][y]==0&&x+2>=0&&y>=0&&x+2<n&&y<n){light_space+=1;space[x+2][y]=1;}
if(space[x][y+2]==0&&x>=0&&y+2>=0&&x<n&&y+2<n){light_space+=1;space[x][y+2]=1;}
if(space[x][y-2]==0&&x>=0&&y-2>=0&&x<n&&y-2<n){light_space+=1;space[x][y-2]=1;}
}
for(int i=0;i<light2_num;i++){
cin>>x>>y;
x=x-1;
y=y-1;
for(int j=0;j<5;j++){
for(int z=0;z<5;z++){
if(space[x-2+j][y-2+z]==0&&x-2+j>=0&&y-2+z>=0&&x-2+j<n&&x-2+z<n){light_space+=1;space[x-2+j][y-2+z]=1;}//cout<<x-2+j<<" "<<y-2+z<<endl;
}
}
}
cout<<n*n-light_space;
}