题目
C++代码:
#include <iostream>
#include <map>
using namespace std;
class point{
public:
point operator()(int a,int b){
point apt;
apt.x=a;
apt.y=b;
return apt;
}
bool operator<(const point &apt) const{
if(x!=apt.x) return x<apt.x;
else return y<apt.y;
}
int x;
int y;
};
int main(){
int n,i,a[5]={0},flag=0;
point apt;
map<point,int>mp;
cin>>n;
for(i=0;i<n;i++){
cin>>apt.x>>apt.y;
mp.insert(pair<point,int>(apt,i));
}
for(map<point, int>::iterator iter=mp.begin();iter!=mp.end();iter++){
apt=iter->first;
if(mp.count(apt(apt.x-1,apt.y))) flag++;
if(mp.count(apt(apt.x+1,apt.y))) flag++;
if(mp.count(apt(apt.x,apt.y-1))) flag++;
if(mp.count(apt(apt.x,apt.y+1))) flag++;
if(flag==4){
if(mp.count(apt(apt.x-1,apt.y-1))) flag++;
if(mp.count(apt(apt.x-1,apt.y+1))) flag++;
if(mp.count(apt(apt.x+1,apt.y+1))) flag++;
if(mp.count(apt(apt.x+1,apt.y-1))) flag++;
a[flag-4]++;
}
flag=0;
}
for(i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}