pair是将2个数据组合成一组数据,正好是一个坐标,再加上map,这道题就好做了
#include<bits/stdc++.h>
using namespace std;
pair<int,int> point[1005];
int main()
{
int res[5] = {0};
map<pair<int,int>,int> mp;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
point[i] = make_pair(x,y);
mp[point[i]] = 1;
}
for(int i=0;i<n;i++)
{
int grade = 0;//分数
int x = point[i].first;
int y = point[i].second;
//满足回收站条件
if(mp[make_pair(x-1,y)] && mp[make_pair(x+1,y)]
&& mp[make_pair(x,y-1)] && mp[make_pair(x,y+1)])
{
//计算分数
if(mp[make_pair(x-1,y-1)])
grade++;
if(mp[make_pair(x+1,y+1)])
grade++;
if(mp[make_pair(x-1,y+1)])
grade++;
if(mp[make_pair(x+1,y-1)])
grade++;
res[grade] ++;
}
}
for(int i=0;i<5;i++)
cout<<res[i]<<endl;
return 0;
}