题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/12dd13e01b4c9d9a0803e84abcaeda6b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f4ed6094768386f4c2fcd2a26ead82b6.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b9826174404145ed6cbff18025dc5cd7.png)
代码
#include<bits/stdc++.h>
using namespace std;
vector<pair<int,int>>c;
map<pair<int,int>,bool>a;
int b[51][51];
int n,L,S;
int ans;
int main()
{
cin>>n>>L>>S;
for(int i=0,x,y;i<n;i++)
{
cin>>x>>y;
a[{x,y}]=1;
c.push_back({x,y});
}
for(int i=S;i>=0;i--)
for(int j=0;j<=S;j++)
cin>>b[i][j];
for(int i=0;i<n;i++)
{
if(c[i].first+S<=L && c[i].second+S<=L)
{
int flag=0;
for(int j=0;j<=S;j++)
for(int k=0;k<=S;k++)
if(b[j][k]!=a[{c[i].first+j,c[i].second+k}])
{
flag=1;
break;
}
if(!flag) ans++;
}
}
cout<<ans;
return 0;
}