用了一个map映射和pair对,如果一个坐标被输入了,将该坐标映射为1
#include <bits/stdc++.h>
using namespace std;
int score[5];
pair<int,int> point[1001];
int main(){
int n;
cin>>n;
map<pair<int,int>,int> isexist;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
point[i]=make_pair(x,y);
isexist[point[i]]=1;
}
for(int i=1;i<=n;i++){
int x=point[i].first,y=point[i].second,cnt=0;
/*
map的映射类似于数组的样子
定义map<前面,后面> yingshe;
yingshe[前面]=后面
*/
if(isexist[(make_pair(x,y-1))] && isexist[(make_pair(x-1,y))] && isexist[(make_pair(x+1,y))] && isexist[(make_pair(x,y+1))]){
if(isexist[(make_pair(x-1,y-1))]) cnt++;
if(isexist[(make_pair(x+1,y-1))]) cnt++;
if(isexist[(make_pair(x-1,y+1))]) cnt++;
if(isexist[(make_pair(x+1,y+1))]) cnt++;
score[cnt]++;
}
}
for(int i=0;i<5;i++) cout<<score[i]<<endl;
}