本题没什么坑,注意一下数据范围就好,有负整数的评测样例.
#include<iostream>
using namespace std;
#define N 10001
int check(long tmp_x,long tmp_y,long x,long y){
if(tmp_x==x&&tmp_y==y) return 0;
if(tmp_x==x&&tmp_y==(y-1)) return 1;
if(tmp_x==x&&tmp_y==(y+1)) return 1;
if(tmp_x==(x-1)&&tmp_y==y) return 1;
if(tmp_x==(x+1)&&tmp_y==y) return 1;
if(tmp_x==(x-1)&&tmp_y==(y-1)) return 2;
if(tmp_x==(x-1)&&tmp_y==(y+1)) return 2;
if(tmp_x==(x+1)&&tmp_y==(y-1)) return 2;
if(tmp_x==(x+1)&&tmp_y==(y+1)) return 2;
else return 0;
}
int main(){
int n;
cin>>n;
long a[n][2];
for(int i=0;i<n;i++){
cin>>a[i][0]>>a[i][1];
}
int cnt_0 = 0,cnt_1 = 0,cnt_2 = 0,cnt_3 = 0,cnt_4 = 0;
for(int i=0;i<n;i++){
long x=a[i][0];
long y=a[i][1];
long tmp_x;
long tmp_y;
int cnt_left_right = 0,cnt_duijiao=0;
for(int j=0;j<n;j++){
tmp_x = a[j][0];
tmp_y = a[j][1];
if(check(tmp_x,tmp_y,x,y)==1){
cnt_left_right++;
}else if(check(tmp_x,tmp_y,x,y)==2){
cnt_duijiao++;
}
}
if(cnt_left_right==4){
if(cnt_duijiao==1){
cnt_1++;
}else if(cnt_duijiao==2){
cnt_2++;
}else if(cnt_duijiao==3){
cnt_3++;
}else if(cnt_duijiao==4){
cnt_4++;
}else{
cnt_0++;
}
}
}
cout<<cnt_0<<endl;
cout<<cnt_1<<endl;
cout<<cnt_2<<endl;
cout<<cnt_3<<endl;
cout<<cnt_4<<endl;
return 0;
}