



#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n;
int a[n][4];
int b[6];
b[1]=0;
b[2]=0;
b[3]=0;
b[4]=0;
b[5]=0;
for(int i=1;i<=n;i++)
{
cin>>a[i][1]>>a[i][2];
a[i][3]=0;
a[i][4]=-1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][1]+1==a[j][1]&&a[i][2]==a[j][2])
a[i][3]++;
if(a[i][1]-1==a[j][1]&&a[i][2]==a[j][2])
a[i][3]++;
if(a[i][1]==a[j][1]&&a[i][2]-1==a[j][2])
a[i][3]++;
if(a[i][1]==a[j][1]&&a[i][2]+1==a[j][2])
a[i][3]++;
// cout<<a[i][3]<<endl;
}
if(a[i][3]==4)
a[i][4]++;
// cout<<a[i][3]<<endl;
if(a[i][4]==0)
{ // cout<<i<<endl;
for(int j=1;j<=n;j++)
{
if(a[i][1]+1==a[j][1]&&a[i][2]+1==a[j][2])
a[i][4]++;
if(a[i][1]-1==a[j][1]&&a[i][2]-1==a[j][2])
a[i][4]++;
if(a[i][1]+1==a[j][1]&&a[i][2]-1==a[j][2])
a[i][4]++;
if(a[i][1]-1==a[j][1]&&a[i][2]+1==a[j][2])
a[i][4]++;
}
// cout<<a[i][4];
if(a[i][4]==0)
b[1]++;
if(a[i][4]==1)
b[2]++;
if(a[i][4]==2)
b[3]++;
if(a[i][4]==3)
b[4]++;
if(a[i][4]==4)
b[5]++;
}
}
for(int i=1;i<=5;i++)
{
cout<<b[i]<<endl;
}
return 0;
}
//取b[5]时不知为何b[0]=-1,以后再不用b[0]
/*
7
1 2
2 1
0 0
1 1
1 0
2 0
0 1
*/

总结:
写题时未考虑内存等问题,往后须知,只会用数组,,,就很菜
思路:
就模拟一下,将坐标存入数组a[i][1],a[i][2],使用a[i][3]判定是否为回收站,使用a[i][4]计算评分,最后b[i]输出 |