#include <bits/stdc++.h>
using namespace std;
map<pair<int,int>,int> mp;
int Smap[52][52] = {0};
int main()
{
int n,L,S;
cin>>n>>L>>S;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
mp.insert(make_pair(make_pair(x,y),1));
}
for(int i = S;i>=0;i--)
{
for(int j=0;j<S+1;j++)
{
cin>>Smap[i][j];
}
}
long long ans=0;
map<pair<int,int>,int>::iterator it = mp.begin();
for(;it!=mp.end();it++)
{
int x = it->first.first;
int y = it->first.second;
int flag =1;//判断标记
if((x+S>L)||(y+S>L)) //边界判断
continue;
for(int i=x;i<=x+S;i++)
{
for(int j=y;j<=y+S;j++)
{
int tree = mp.find(make_pair(i,j)) == mp.end()?
0:1;
if(tree != Smap[i-x][j-y])//注意这里的坐标
{
flag = 0;
goto here;
}
}
}
here: ;
ans+=flag;//计算答案
}
cout<<ans;
return 0;
}
CSP 202206-2 寻宝大冒险!
最新推荐文章于 2024-09-27 14:28:55 发布