编辑器:vsCode
语言:c++
#include <windows.h> //keep external terminal
#include <bits/stdc++.h>
#include <map>
using namespace std;
struct Node
{
int x, y;
bool operator < (Node const& _A) const{
if(x!=_A.x) return x<_A.x;
else return y<_A.y;
}
};
map<struct Node, int> Map;
int judge(Node node)
{
int flag = 0;
int x[4] = {0, 0, 1, -1};
int y[4] = {1, -1, 0, 0};
Node newNode;
for (int i = 0; i < 4; i++)
{
newNode.x = node.x + x[i];
newNode.y = node.y + y[i];
flag += Map[newNode];
}
if (flag != 4)
return -1;
flag = 0;
int x2[4] = {1, 1, -1, -1};
int y2[4] = {1, -1, 1, -1};
for (int i = 0; i < 4; i++)
{
newNode.x = node.x + x2[i];
newNode.y = node.y + y2[i];
flag += Map[newNode];
}
return flag;
}
int main()
{
int n;
scanf("%d", &n);
Node node[n];
for (int i = 0; i < n; i++)
{
scanf("%d%d", &node[i].x, &node[i].y);
Map[node[i]] = 1;
}
int ans[5];
memset(ans, 0, sizeof(ans));
for (int i = 0; i < n; i++)
{
int num = judge(node[i]);
if (num >= 0)
ans[num]++;
}
for (int i = 0; i < 5; i++)
printf("%d\n", ans[i]);
system("pause"); //keep external terminal
return 0;
}