问题
源码
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int N=100005;
typedef struct {
int x;
int y;
} point;
point p[N];
int result[5];
int n;
int cmp(point x,point y) {
if((x.x<y.x)||(x.x==y.x&&x.y<y.y)) return 1;
else return 0;
}
int Search(int x,int y) {
int i,j,flag=0;
for(i=0; p[i].x<=x; i++) {
if((x==p[i].x)&&(y==p[i].y)){
flag=1;
break;
}
}
return flag;
}
int Judge(point a) {
int flag=0;
if(Search(a.x,a.y+1)&&
Search(a.x,a.y-1)&&
Search(a.x+1,a.y)&&
Search(a.x-1,a.y)){
flag=1;
}
return flag;
}
void SetScore(point x) {
int a[2]= {-1,1},b[2]= {-1,1},score=0;
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
if(Search(x.x+a[i],x.y+b[j]))
score++;
}
}
result[score]++;
}
int main() {
int i,j,flag=1;
cin>>n;
for(i=0; i<n; i++) {
cin>>p[i].x>>p[i].y;
}
sort(p,p+n,cmp);
for(i=0; i<n; i++) {
if(Judge(p[i])) SetScore(p[i]);
}
for(i=0;i<5;i++)
cout<<result[i]<<endl;
return 0;
}