代码
初始化一个全为0的字符数组,‘0’表示黑暗,每输入一个火把或者荧光石的坐标就把其照亮的范围内的元素变为‘1’表示明亮,最后搜索黑暗的地方,输出个数。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,k,i,x,y,u,v,cnt=0;
char s[105][105];
memset(s,'0',sizeof(s));
cin>>n>>m>>k;
for(i=0;i<m;i++){
cin>>x>>y;
s[x-2][y]='1';
for(u=x-1,v=y-1;v<=y+1;v++)
s[u][v]='1';
for(u=x,v=y-2;v<=y+2;v++)
s[u][v]='1';
for(u=x+1,v=y-1;v<=y+1;v++)
s[u][v]='1';
s[x+2][y]='1';
}
for(i=0;i<k;i++){
cin>>x>>y;
for(u=x-2;u<=x+2;u++)
for(v=y-2;v<=y+2;v++)
s[u][v]='1';
}
for(u=1;u<=n;u++)
for(v=1;v<=n;v++)
if(s[u][v]=='0') cnt++;
cout<<cnt;
return 0;
}